如何检查jdbc连接和dbbool连接是否达到最大值?

时间:2014-06-20 17:04:27

标签: java exception jdbc error-handling

我想知道jdbc连接异常和dbbool连接异常,我该如何避免这些。

3 个答案:

答案 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)

要正确显示错误消息,您必须将trycatch放在正确的位置和正确的时间,总结一下,您可以使用java.sql.SQLException,因为它可以在driverdatabase

任何JDBC操作的基本和通用方案是:

1)。注册您的驱动程序

2)。打开连接。

3)。执行查询

4)。提取数据

5)。关闭,关闭所有内容:ResultSetStatementConnection

这是您正确捕获错误或异常原因的方法:

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连接池,您可以查看下面提供的链接:

How to establish a connection pool in JDBC?

答案 2 :(得分:1)

这实际上取决于您正在使用的池库。

如果您使用的是Apache Commons Pool,请设置BaseGenericObjectPool.setBlockWhenExhausted(false)

然后拨打GenericObjectPool.borrowObject(long borrowMaxWaitMillis)会抛出NoSuchElementException