Я использую драйвер JTDS для связи с SQL Server, и у меня возникают проблемы с управлением потерей соединения. Я не могу проверить, удалено ли соединение. Я буду подробно моя проблема:Подключение SQL Server с использованием JDBC - JTDS
Это мой метод, который создает соединение:
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(), приложение блокируется в методе ожидающего соединения обратно. Никакое исключение не выбрасывается.
Я пытался использовать следующие средства для проверки падения соединения:
DriverManager.setLoginTimeout(x);
statement.setQueryTimeout(x);
3 loginTimeout = х параметров в строке подключения
Ни один из них не получил успеха.
Если вы можете дать мне несколько рекомендаций, будем благодарны.
Спасибо!
Спасибо! Я поместил «socketTimeout = 5» в строку подключения, и он работает правильно для меня! –
Отлично. Я рад, что это помогло. – BruceRudd