Sql jTDS JDBC不在应该时引发异常

Sql jTDS JDBC不在应该时引发异常,sql,sql-server,jdbc,jtds,Sql,Sql Server,Jdbc,Jtds,我在使用jTDS JDBC驱动程序时遇到了以下代码的问题。一切正常,查询也没有问题。但是如果连接失败,我不会收到错误/异常。我试图输入一个错误的IP,禁用本地网络连接,提供错误的端口号等,但没有运气。我真的需要知道什么时候连接失败 似乎一切都停在这行:con=java.sql.DriverManager.getConnectionurl,id,pass;但只有当它真的应该抛出异常时 import java.sql.SQLException; public class Main { p

我在使用jTDS JDBC驱动程序时遇到了以下代码的问题。一切正常,查询也没有问题。但是如果连接失败,我不会收到错误/异常。我试图输入一个错误的IP,禁用本地网络连接,提供错误的端口号等,但没有运气。我真的需要知道什么时候连接失败

似乎一切都停在这行:con=java.sql.DriverManager.getConnectionurl,id,pass;但只有当它真的应该抛出异常时

import java.sql.SQLException;

public class Main {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {


    java.sql.Connection con = null;


    String url= "jdbc:jtds:sqlserver://x.x.x.x/DATABASE";
    String id= "seret";
    String pass = "secret";

    Class.forName("net.sourceforge.jtds.jdbc.Driver");


    System.out.println("Connecting to database...");

    con = java.sql.DriverManager.getConnection(url, id, pass);

    System.out.println("Connected?")
    //Program never gets here, but does not close either.

    if(con.isValid(1000)) System.out.println("Does not work either...");

    if(con!=null) con.close();      

    }

}

我不知道你为什么没有例外。在jTDS 1.2.4中使用SQL Server 2008和SQL Server 2000时,我确实会得到一个SQLException SQLState=S1000

如果升级jTDS驱动程序没有帮助,您可以尝试附加;loginTimeout=20到您的URL字符串。所以它看起来像:

String url= "jdbc:jtds:sqlserver://x.x.x.x/DATABASE;loginTimeout=20";
然后重新运行应用程序并等待至少20秒。希望您将得到一个超时异常

如果loginTimeout设置没有帮助,您也可以使用socketTimeout设置。尽管如此,请参阅关于使用socketTimeout的影响的jTDS常见问题解答。基本上,您希望将其设置为比您期望应用程序执行的最长查询更长的时间