2012-02-03 13 views
9

Estoy tratando de establecer una segunda conexión a otra base de datos en otro servidor. Estamos utilizando play framework 1.2.4 y encontré la siguiente documentación para 1.2.3.Varias bases de datos en el marco de juego

http://www.playframework.org/documentation/1.2.3/model#multiple

application.conf: 
db_other.url=jdbc:mysql://localhost/test 
db_other.driver=com.mysql.jdbc.Driver 
db_other.user=root 
db_other.pass= 

Connection conn = DB.getDBConfig("other").getConnection() 

Esto no funcionó para mí, así que lo hizo un poco más de búsqueda y encontrar el siguiente artículo. Este artículo me ha dicho que la configuración anterior se filtró desde la rama principal y 1.3 estará disponible en el futuro ...

JPA.getJPAConfig method not found on Play's API

https://play.lighthouseapp.com/projects/57987/tickets/706

Puede alguien darme una manera de hacer algunos simples consultas a esa otra base de datos? Creo que no soy el único que quiere usar múltiples bases de datos.

Gracias!

+0

Para consultas a otra db en el mismo servidor de im utilizando esta prueba Lista = JPA.em(). createNativeQuery ("SELECT * FROM other_db..TABLE"). getResultList(); en sybase – n4cer

Respuesta

7

Para leer de vez en cuando los datos de otra base de datos, también puede utilizar el viejo y simple JDBC:

Connection c = null; 
    PreparedStatement pstmt = null; 
    ResultSet rs = null; 

    try { 
     String url = "YourJdbcUrl"; 
     Class.forName("YourDriver").newInstance(); 
     c = DriverManager.getConnection(url, "XXX", "XXX"); 
     pstmt = c.prepareStatement("SELECT * FROM TABLE"); 
     rs = pstmt.executeQuery(); 
     while (rs.next()) { 
      // Fill your data into Play Model instances here. 
     } 

    }catch(Exception e){ 
     e.printStackTrace(); 
    } finally { 
     try { if (rs != null) rs.close(); } catch (Exception e) {}; 
     try { if (pstmt != null) pstmt.close(); } catch (Exception e) {}; 
     try { if (c != null) c.close(); } catch (Exception e) {}; 
    } 

    render(...); 
+1

¡Funciona como un amuleto, gracias! – dreampowder

1

Así me estoy conectando a otras bases de datos hasta que haya otra solución.

Connection c = null; 
try { 
    ComboPooledDataSource ds = new ComboPooledDataSource(); 
    ds.setDriverClass("com.sybase.jdbc3.jdbc.SybDriver"); 
    ds.setJdbcUrl("jdbc:sybase:Tds:server:4100/db"); 
    ds.setUser("user"); 
    ds.setPassword("pass"); 
    ds.setAcquireRetryAttempts(10); 
    ds.setCheckoutTimeout(5000); 
    ds.setBreakAfterAcquireFailure(false); 
    ds.setMaxPoolSize(30); 
    ds.setMinPoolSize(1); 
    ds.setMaxIdleTimeExcessConnections(0); 
    ds.setIdleConnectionTestPeriod(10); 
    ds.setTestConnectionOnCheckin(true); 

    DB.datasource = ds; 
    try { 
     c = ds.getConnection(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

    } catch (PropertyVetoException e) { 
     e.printStackTrace(); 
} 

String sql = "SELECT * FROM TABLE"; 

try { 
    PreparedStatement pstmt = c.prepareStatement(sql); 
    ResultSet rs = pstmt.executeQuery(); 

    while (rs.next()) { 
     System.out.println(rs.getString(1)+"\n"); 
    } 

    c.close(); 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 
Cuestiones relacionadas