2012-02-03 22 views
9

Başka bir sunucudaki başka bir veritabanına ikinci bir veritabanı bağlantısı kurmaya çalışıyorum. Oyun çerçevesi 1.2.4 kullanıyoruz ve 1.2.3 için aşağıdaki belgeleri buldum. Bu benim için çalıştı vermediOyun çerçevesinde birden fazla Veritabanları

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() 

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

yüzden biraz daha arama yaptı ve aşağıdaki makaleye bulundu. Bu makale Yukarıdaki yapılandırma ...

JPA.getJPAConfig method not found on Play's API 1.3 ana daldan içinde sızan ve gelecekte kullanılabilir olacağını söyledi

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

herkes bana bazı basit yapmak için bir yol verebilir diğer veritabanına sorgular? Birden fazla veritabanını kullanmak isteyen tek kişi ben değilim.

Teşekkürler!

+0

= JPA.em(). createNativeQuery ("SELECT * FROM other_db..TABLE"). getResultList(); sybase içinde – n4cer

cevap

7

bazen diğer veritabanından, ayrıca düz eski JDBC kullanabilirsiniz verileri okumak için: Bu Liste testi kullanılarak aynı sunucu im başka db sorgular için

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

Bir çekicilik gibi çalışır, teşekkürler! – dreampowder

1

Başka bir çözüm bulunana kadar diğer veritabanlarına şu şekilde bağlanıyorum.

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(); 
} 
İlgili konular