当前位置: 首页 > 面试题库 >

在哪里关闭Java PreparedStatements和ResultSets?

陶泳
2023-03-14
问题内容

考虑以下代码:

PreparedStatement ps = null;
ResultSet rs = null;
try {
  ps = conn.createStatement(myQueryString);
  rs = ps.executeQuery();
  // process the results...
} catch (java.sql.SQLException e) {
  log.error("an error!", e);
  throw new MyAppException("I'm sorry. Your query did not work.");
} finally {
  ps.close();
  rs.close();
}

上面没有编译,因为都PreparedStatement.close()ResultSet.close()抛出java.sql.SQLException。那么,我是否要在finally子句中添加try
/ catch块?还是将close语句移到try子句中?还是只是不打扰靠近?


问题答案:

对于文件I / O,通常将try /
catch添加到finally块。但是,您必须注意不要从finally块中抛出任何异常,因为它们会导致原始异常(如果有)丢失。

有关关闭数据库连接的更具体的示例,请参见本文。



 类似资料:
  • 问题内容: 我正在开发jsf应用程序,并使用hibernate模式作为后端。我想创建会话工厂,并在整个应用程序中关闭它。我正在使用util类创建Session工厂。 在我的DAO类的每种方法中,我都会打开会话工厂并关闭它。因此,在我只能打开/关闭会话工厂一次的应用程序中。提前致谢。 问题答案: 在我的应用程序中在哪里打开和在哪里关闭SessionFactory 您正在使用单例会话工厂对象。因此,您

  • 问题内容: 我应该在哪里关闭与Elasticsearch客户端的连接?我正在使用Spring,并且我不想使用Elasticsearch集成,因为我想学习如何首先完成它。应该只为该应用程序创建一个客户端吗?意味着它将具有单例范围?还是应该具有原型范围并为每次交互关闭连接? 问题答案: 您应该为每个应用程序使用一个客户端,使其成为单例并在应用程序关闭时关闭。

  • 问题内容: 看来我关闭时会自动关闭。但是我想返回并在另一种方法中使用它,所以我不知道在何处关闭and 。 我进入catch块是因为我发现,如果将它放在finally块中,我将在它返回之前立即丢失我的数据。现在当我想关闭时,我无法关闭和。有什么解决办法吗? 问题答案: 使用用于断开后持有信息

  • 我正在用java开发一个web应用程序,我对关闭MongoClient有疑问。 看到这http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started-with-java-driver MongoClient实例实际上代表到数据库的连接池;即使有多个线程,您也只需要一个Mongo

  • 但是,我在任何地方都找不到JDBC驱动程序本身(jar文件)。似乎有一个从Cloudera下载的jar文件,但需要注册。 有没有人知道在哪里获得简单的Apache Hive JDBC驱动程序本身?

  • 我所说的集群信息指的是这样的信息 < li >订阅的消费者/消费者群体 < li >读取和提交的偏移量 < li >分区的领导者和追随者 < li >关于服务器等的主题。 zookeeper是将这些信息保存在自己的数据库中(尽管我之前从未听说zookeepher有自己的数据库),还是将这些信息存储在Kafka集群中的一些主题等? 编辑:以及后续问题:动物园管理员如何从__consumer_offs