Java JDBC 连接状态

新手上路,请多包涵

我正在(成功地)使用以下方法连接到数据库:

 java.sql.Connection connect = DriverManager.getConnection(
  "jdbc:mysql://localhost/some_database?user=some_user&password=some_password");

我应该检查什么以查看连接是否在一段时间后仍处于打开状态?

我希望有类似 connect.isConnected(); 的东西供我使用。

原文由 MonoThreaded 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 701
2 个回答

没有什么。只需执行您的查询。如果连接中断,您的 JDBC 驱动程序将重新连接(如果它支持它,并且您在连接字符串中启用了它——大多数不支持它),否则您将得到一个异常。

如果您检查连接是否已启动,它可能会在您实际执行查询之前掉线,因此您通过检查绝对一无所获。

也就是说,许多连接池在分发连接之前通过执行诸如 SELECT 1 之类的操作来验证连接。但这只不过是执行一个查询,所以您也可以执行您的业务查询。

原文由 dty 发布,翻译遵循 CC BY-SA 3.0 许可协议

你最好的机会是只对一个表执行一个简单的查询,例如:

 select 1 from SOME_TABLE;

哦,我刚刚看到自 1.6 以来有一种新方法可用:

java.sql.Connection.isValid(int timeoutSeconds) :

如果连接尚未关闭且仍然有效,则返回 true。调用此方法时,驱动程序应提交对连接的查询或使用其他一些机制来积极验证连接是否仍然有效。驱动程序提交的用于验证连接的查询应在当前事务的上下文中执行。

原文由 home 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题