我的应用程序服务器与MySQL数据库有连接。此连接全天候开放。
让我们说我的互联网崩溃,或者我要阻止3306端口。
JDBC会抛出错误吗?如果没有,我该如何处理这类问题?
我之所以这样问是因为我之前有过MySQL连接随机停止工作的情况,但是没有关闭,这导致客户超时。
答案 0 :(得分:1)
您将获得MySQLNonTransientConnectionException
或CommunicationsException
。通常,为了程序安全,您要么:
根据需要打开/关闭连接
连接关闭时重新打开
我个人推荐前者,特别是当用户指定数据库时(某些mysql设置有连接超时)。
修改强>:
我似乎忘了提及连接池,@ThorbjørnRavnAndersen,但这也是一个可行的解决方案。我个人并不这样做,每个线程操作都使用可实例化的SQL连接。
答案 1 :(得分:0)
就个人而言,我将任何数据库调用抛出到try / catch块中,因为总会出现问题。您将需要在catch块中设置一些默认值,如果它出于某种原因碰巧出现在这些默认值上,则向最终用户显示某种(理想上相当漂亮的)错误消息。
运行SQL查询并不总能保证撤回任何类型的结果......任何数量的事情都可能出错 - 服务器可能已关闭,连接可能已经太饱和而无法拉动及时的结果,它也可能坐在各种备份的死点......这些事情必须始终被考虑在内,这就是为什么我建议按照上述方式进行的。
最后,回答你的问题,是的,在任何这种情况下,JDBC实际上都会抛出错误。