使用 OJDBC 进程是否使用 isValid 方法检查连接是否仍然存在?我试图弄清楚它可能对数据库产生什么影响以及这个过程有多繁重。例如它是请求一个列,还是只用几个字节的数据对数据库执行 ping 操作。
最佳答案
每个供应商以不同的方式实现 jdbc 方法。 例如 Oracle 的实现是:
public boolean isValid(int var1) throws SQLException {
return this.pingDatabase(var1) == 0;
}
pingDatabase
简单地执行 select x from dual
:
int doPingDatabase() throws SQLException {
Statement var1 = null;
byte var3;
try {
var1 = this.createStatement();
((oracle.jdbc.OracleStatement)var1).defineColumnType(1, 12, 1);
var1.executeQuery("SELECT \'x\' FROM DUAL");
return 0;
} catch (SQLException var7) {
var3 = -1;
} finally {
if(var1 != null) {
var1.close();
}
}
return var3;
}
我相信其他供应商也在做类似的事情。
关于java - Connection.isValid(time) 实际上做了什么来检查连接是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37972004/