我有一个场景,用户向我提供他想要连接的数据库的主机名、端口和凭据。我不知道数据库的味道。所以我尝试做的是尝试连接到每个数据库类型,看看连接是否成功。我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");
}