ユーザーが接続したいデータベースのホスト名、ポート、および資格情報を提供するシナリオがあります。ただし、データベースのフレーバーはわかりません。そこで、私がやろうとしているのは、各データベース タイプに接続してみて、接続が成功するかどうかを確認することです。私sqljdbc4.jar
はSQLサーバーに使用し、jtds-1.2.7.jar
Sybase 接続用。それぞれのドライバー URL とクラス名を使用します。sybase データベースに接続しようとすると、以下のコードは最初に SQL サーバーに接続し、次に sybase に接続しようとします。ただし、SQL サーバー接続を試行すると、接続が失敗する前に次のメッセージが繰り返し表示されます。このエラー メッセージを表示しないようにするにはどうすればよいですか? Oracle ドライバーの詳細に対して同じホスト名、ポート、および資格情報を使用すると、すぐにエラーが表示されます。しかし、SQLサーバーの詳細を使用すると、複数回繰り返し試行されます。これはタイムラグを引き起こしているので、それを避けてすぐにエラーを確認したい.
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");
}