【发布时间】:2014-08-13 12:24:19
【问题描述】:
我正在使用 JTDS 驱动程序与 SQL Server 通信,但在管理连接丢失时遇到了问题。我无法检查连接是否断开。我将详细说明我的问题:
这是我创建连接的方法:
public synchronized Connection NewConnection (ConnectionParameters params) {
try {
String url = "";
if (params.getTipoBanco (). equals ("MySQL")) {
if (! mySqlDriverLoaded)
return null;
url = "jdbc:mysql://"+params.getIpServidor()+":"+params.getPorta()+"/"+params.getNomeBanco()+"?user="+params.getUsuario()+"&password="+params.getSenha();
} else if (params.getTipoBanco (). equals ("SQL Server")) {
if (! sqlServerDriverLoaded)
return null;
url = "jdbc:jtds:sqlserver://"+params.getIpServidor()+":"+params.getPorta()+"/"+params.getNomeBanco()+";user="+params.getUsuario()+";password="+params.getSenha();
} else {
throw new IllegalArgumentException("Type of database invalid data");
}
return DriverManager.getConnection(url);
} Catch (Exception e) {
e.printStackTrace ();
message = "Error in connection:" + e.getMessage ();
return null;
}
}
如果服务器在创建连接时处于脱机状态,您可以检查一下,因为会抛出 SQLException。问题在于执行成功后连接掉线:
Connection connSqlserver = ConnectionFactory.getInstance().newConnection(paramSqlserver);
PreparedStatement stSqlServer = connSqlserver.prepareStatement("select * from operator");
ResultSet rsSqlserver = stSqlserver.executeQuery();
如果在 executeQuery() 之前或期间断开连接,应用程序将锁定在期望连接返回的方法中。不抛出异常。
我尝试使用以下方法来验证连接断开:
1
DriverManager.setLoginTimeout(x);
2
statement.setQueryTimeout(x);
3 loginTimeout=x 连接字符串中的参数
这些都没有成功。
如果您能给我更多的指导,将不胜感激。
谢谢!
【问题讨论】:
标签: java sql-server jdbc jtds