我想知道jdbc连接异常和dbbool连接异常,我该如何避免这些。
答案 0 :(得分:2)
如果您正在使用Apache Commons Pool库,GenereicObjectPool提供了两种方法:
getMaxActive() returns the amount of allowed Connections
getNumActive() returns the number of actually used Connections
如果你检查getMaxActive()> getNumActive()您可以在不捕获异常的情况下满足您的要求。
答案 1 :(得分:1)
要正确显示错误消息,您必须将try
和catch
放在正确的位置和正确的时间,总结一下,您可以使用java.sql.SQLException
,因为它可以在driver
和database
。
任何JDBC操作的基本和通用方案是:
1)。注册您的驱动程序
2)。打开连接。
3)。执行查询
4)。提取数据
5)。关闭,关闭所有内容:ResultSet
,Statement
和Connection
。
这是您正确捕获错误或异常原因的方法:
try{
//1).Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
// 2). Open a connection
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//3). Execute a query
System.out.println("Creating statement...");
Statement stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
//4). Extracting datas
while(rs.next()){
.................
.............
}
//5).close everything
rs.close();
stmt.close();
conn.close();
} catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
} catch(Exception e){
//Handle errors for Class.forName / JDBC driver
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(conn!=null)
conn.close();
} catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
关于JDBC连接池,您可以查看下面提供的链接:
答案 2 :(得分:1)
这实际上取决于您正在使用的池库。
如果您使用的是Apache Commons Pool,请设置BaseGenericObjectPool.setBlockWhenExhausted(false)
。
然后拨打GenericObjectPool.borrowObject(long borrowMaxWaitMillis)
会抛出NoSuchElementException
。