Java BoneCP语句句柄不能转换为JDBC
我正在尝试设置boneCP连接,收到以下错误消息: 线程“main”java.lang.ClassCastException中的异常:com.jolbox.bonecp.StatementHandle无法转换为com.mysql.jdbc.Statement 连接似乎工作正常,但我在查询时被阻止了 这是我的密码:Java BoneCP语句句柄不能转换为JDBC,java,sql,jdbc,bonecp,Java,Sql,Jdbc,Bonecp,我正在尝试设置boneCP连接,收到以下错误消息: 线程“main”java.lang.ClassCastException中的异常:com.jolbox.bonecp.StatementHandle无法转换为com.mysql.jdbc.Statement 连接似乎工作正常,但我在查询时被阻止了 这是我的密码: BoneCP connectionPool = null; Connection connection = null; try { /
BoneCP connectionPool = null;
Connection connection = null;
try {
// load the database driver (make sure this is in your classpath!)
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
e.printStackTrace();
return;
}
try {
// setup the connection pool
BoneCPConfig config = new BoneCPConfig();
config.setJdbcUrl("jdbc:mysql://192.126.0.0:3306/"); // jdbc url specific to your database, eg jdbc:mysql://127.0.0.1/yourdb
config.setUsername("root");
config.setPassword("");
config.setMinConnectionsPerPartition(5);
config.setMaxConnectionsPerPartition(10);
config.setPartitionCount(1);
connectionPool = new BoneCP(config); // setup the connection pool
connection = connectionPool.getConnection(); // fetch a connection
if (connection != null){
System.out.println("Connection successful!");
Statement stmt = (Statement) connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 1 FROM table"); // do something with the connection.
while(rs.next()){
System.out.println(rs.getString(1)); // should print out "1"'
}
}
connectionPool.shutdown(); // shutdown connection pool.
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这很简单:如果您使用BoneCP,就不能直接访问底层驱动程序的对象。这通常适用于连接池,因为它们通常使用对象代理来处理资源管理(例如,当连接返回到池时关闭语句、结果集等)。这尤其适用于语句,因为连接池也可以(通常也可以)提供语句缓存 特别是对于BoneCP,您应该能够使用(尽管我不是100%确定)获得包装语句
虽然最大的问题是:为什么需要转换到
com.mysql.jdbc.Statement
,但是java.sql.Statement
接口对您来说是否足够?我不知道如何回答您的问题?我应该如何构造代码来执行一个简单的查询?您通常应该只与JDBC接口交谈,而不与特定驱动程序的类交谈。在你的问题代码中,没有什么不能通过简单地使用java.sql.Statement
来完成的。因此,将com.mysql.jdbc.Statement
的导入替换为java.sql.Statement
(这也将消除您应用强制转换的需要)。感谢您的帮助^!!您知道如何将连接传递给动作侦听器(线程),以便每次迭代都可以查询数据库吗?单独问一个问题可能更好。虽然在动作监听器中需要数据库连接听起来不是一个好的设计。