java.sql.Connection类有两个方法可以判断连接是否有效
一个是java.sql.Connection#isValid
一个是java.sql.Connection#isClosed
这两个方法的应用场景区别还是很大的
首先看isClosed方法
org.apache.commons.dbcp2.DelegatingConnection#isClosed
在这里插入图片描述
这方法是判断java对象Connection对象是否是连接状态,而不是到数据库的连接是否正常。比如数据库宕机,Connection对象的状态可能还是连接状态isClosed=false,这时候如果通过Connection对象进行一次数据库操作,这时Connection对象才能真正判断出数据库异常,再次调用isClosed返回的才是true。
而org.apache.commons.dbcp2.DelegatingConnection#isValid
首先会调用isClose方法判断连接状态
在这里插入图片描述
然后进行一次尝试连接数据库操作判断数据库是否正常响应。
org.mariadb.jdbc.MariaDbConnection#isValid
org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol#isValid
在这里插入图片描述
因此可以知道,isClosed是true,isValid一定是false,isClosed是false时,isValid不一定是true。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐