我正在尝试建立与另一台服务器上的另一个数据库的第二个数据库连接。我们使用的是play框架1.2.4,我发现了以下1.2.3的文档。
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()
这对我不起作用,所以我做了更多的搜索,找到了下面的文章。这篇文章告诉我,上面的配置是从1.3主分支泄露的,将来会提供。。。
在Play上找不到JPA.getJPAConfig方法';s API
https://play.lighthouseapp.com/projects/57987/tickets/706
有人能给我一种方法,对另一个数据库进行一些简单的查询吗?我想我不是唯一一个想使用多个数据库的人。
谢谢!
为了偶尔从其他数据库读取数据,您还可以使用普通的旧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(...);
这就是我现在连接到其他数据库的方式,直到有了另一个解决方案。
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();
}