我想认识朋友,当jdbc连接失效时,可能是故意关闭,或某些事务使其无效并关闭它,有没有办法知道究竟是什么使连接无效,是我可以获得并检查连接上的任何痕迹。
我遇到的情况是我必须检测已脱机的服务器,我是怎么做的;尝试从连接池借用连接的任何操作,检查该连接是否有效。如果不是,并且如果它无效的原因是它无法连接到数据库,然后触发属性更改并通知任何订户更改,则订户将弹出一个对话框以阻止所有操作并开始查询数据库每5秒检查一次是否回来。希望我能说清楚我的情况
答案 0 :(得分:2)
最好能够使用连接池库来代表您验证连接。在数据库操作期间,它将自动测试连接运行状况,并在现有连接无效时建立新连接。
对于C3P0连接池库,请查看以下文档:
http://www.mchange.com/projects/c3p0/#configuring_connection_testing
答案 1 :(得分:0)
通常,当您尝试使用陈旧连接时,例如通过发出@PeterLawrey建议的简单SQL语句,将抛出SQLException,其中包含错误的详细信息,如果它们完全可供驱动程序使用。捕获异常并分析其getErrorCode()
和getSQLState()
方法返回的内容。请记住,虽然SQLSTATE值是标准化的,但它们不是非常精细,而供应商错误代码可能提供更多信息,但在连接到不同数据库平台时会有所不同。