1

我有一个场景,用户向我提供他想要连接的数据库的主机名、端口和凭据。我不知道数据库的味道。所以我尝试做的是尝试连接到每个数据库类型,看看连接是否成功。我sqljdbc4.jar用于 sql server 和jtds-1.2.7.jar用于 sybase 连接。我使用它们各自的驱动程序 url 和类名。当我尝试连接到 sybase 数据库时,下面的代码尝试先连接到 sql server,然后再连接到 sybase。但是,当它尝试 sql server 连接时,我在连接失败之前反复看到以下消息。我怎样才能摆脱这个错误信息?当我针对 oracle 驱动程序详细信息使用相同的主机名、端口和凭据时 - 我立即看到一个错误。但是使用 sql server 详细信息,它会重复尝试多次。这会导致时间滞后,因此我想避免它并立即查看错误。

com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
WARNING: ConnectionID:1 Prelogin error: host sybasehost port 4100 Unexpected response type:0

代码:

try{
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        url = "jdbc:sqlserver://sybasehost:4100;databaseName=dbname";
        System.out.println(url);
        java.sql.Connection conn = DriverManager.getConnection(url, "username", "password");
        System.out.println("Connection successful!");
    }
    catch(SQLException se)
    {
        se.printStackTrace();
        System.out.println("Connection unsuccessful");
    }
    catch(ClassNotFoundException cnfe)
    {
        cnfe.printStackTrace();
        System.out.println("Class not found");
    }
    //then try sybase db connection
    try{
        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        url = "jdbc:jtds:sybase://sybasehost:4100/dbname";
        System.out.println(url);
        java.sql.Connection conn = DriverManager.getConnection(url, "username", "password");
        System.out.println("Connection successful!");
    }
    catch(SQLException se)
    {
        se.printStackTrace();
        System.out.println("Connection unsuccessful");
    }
    catch(ClassNotFoundException cnfe)
    {
        cnfe.printStackTrace();
        System.out.println("Class not found");
    }
4

0 回答 0