繁体   English   中英

使用JDBC的SQL Server连接-JTDS

[英]SQL Server connection using JDBC - JTDS

我正在使用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参数

这些都不成功。

如果您能给我更多指导,将不胜感激。

谢谢!

仅供参考, LoginTimeout设置您等待建立连接的时间。 一旦连接,将无效。 看起来jTDS驱动器实现了socketTimeout,我认为这应该可以满足您的条件。

他们还实现了socketKeepAlive 我不熟悉它们的实现方式,但是我假设对连接进行轮询以保持其打开状态,并且\\或者如果该连接被丢弃则返回异常。 我不认为jTDS提供此功能,但某些连接故障转移功能也可能有用。

一个实现的摘要

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM