正确使用数据库连接

原创 2005年02月26日 10:35:00

以前做Java数据库查询的时候都会按照许多书上的标准方法先建立一个数据库连接,然后在该连接上调用查询,使用完毕后立刻关闭连接。后来,觉得如果要频繁查询,那么就要不停地建立连接,关闭连接,很浪费资源。通常在这种情况下会使用连接池,这样多个查询就可以共享连接,而建立和关闭连接仅仅在程序开始和结束的时候才执行,大大提高了效率。

前几天做一个数据库查询的时候遇到了一个介于前面两种之间的情况,既需要频繁查询数据,但是又只需要一个连接。我在程序的开始建立一个连接,以后的查询代码如下:

PreparedStatement statement;

try{

  //在此进行数据库操作

  statement.close();

}

catch(Exception e){

  System.err.println(e);

}

每个查询代码都是这样,因为同时不会有多个查询产生,所以我认为这样是正确的。如果在以上代码的“数据库操作”部分不会出错的话,这样的代码的确是正确的,但是如果出现异常,那么就不会执行statement.close()一句,于是在该statement依然占用着数据库连接,导致以后的查询都不能进行。这就需要我们正确地关闭该statement。参考了网上别人的做法之后,我使用了以下的代码:

PreparedStatement statement;

try{

  //在此进行数据库操作 

}

catch(Exception e){

  System.err.println(e);

}

finally {

  try{

    statement.close();

  }

  catch(Exception e1){

    System.err.println(e1);

  }

}

finally里面的部分是始终都要执行的,所以把statement.close()一句放在finally里,而statement.close()本身也会抛出异常,所以又要使用一个try…catch语句。

这样的做法可以保证查询出错时仍然可以正确关闭statement,是比较好的做法。但是如果statement.close()时出错,那仍然会造成以后的查询不能执行,所以,最好的办法还是使用连接池来统一管理连接。

相关文章推荐

JDBC- 正确关闭数据库连接

在我们刚开始学习 JDBC时,由于没有使用数据库连接池,我们代码中的每一次连接都需要我们自己来关闭。 不过很多人,都没有正确关闭,包括一些 JDBC的教程。 例如: https:...

在数据库连接名跟密码还有数据库名字也正确的时候报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied fo

56385 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1] WARN  com.mchange.v2.resourc...

使用hibernate数据库连接不释放的问题

最近同事遇到使用hibernate连接不释放的问题,代码大概是下面这样: Query query = session.createQuery(hql); for (int i = 0; i < val...

一个关于php使用pdo方式进行数据库连接和处理的类

话不多说,先贴代码
  • meeeen7
  • meeeen7
  • 2016年08月06日 15:24
  • 2430

使用Eclipse自带的工具检测和数据库连接时否成功

1.第一步 找到 Data Source Explorer 并 new 1.1如果没有找到 Data Source Explorer 可根据如图找: 2.第二步 选中自己要连接的数据库 ...

使用SSM框架配置多个数据库连接

最近做同步数据的时候需要将数据同步到另一个数据库中,也就是跨库操作,这就需要我们配置多个数据库连接来进行操作,具体代码如下:1、在jdbc.properties配置文件内配置两个数据库连接:ds1.d...

使用BasicDataSource引发的数据库连接中断的问题和解决方法

最近碰到一个问题,应用程序每天的第一次进行系统访问时,会报一个奇怪的错误,最后经过仔细的跟踪,错误信息找到了,如下所示: 1 The last packet successfu...

jfinal 多个数据库连接及使用

有时根据项目需要,我们要连接多个数据,如db1 ,或db2,分别对应不通的ip地址及数据库名称, jfinal 对于这样的要求,有自己的一套方案,需要进行如下配置。 public void con...
  • joman5
  • joman5
  • 2016年12月15日 17:20
  • 387

使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

使用VS2015和Nhibernate简单C#代码实现与MySql数据库连接,实现增删改查操作,不涉及Web。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:正确使用数据库连接
举报原因:
原因补充:

(最多只允许输入30个字)