[HOWTO] Microsoft JDBC の使用方法

概要
この資料では、Microsoft SQL Server 2000 Driver for JDBC を使用して SQL Server 2000 に接続する方法について説明します。


: Microsoft SQL Server 2000 Driver for JDBC のインストール手順については、『Microsoft SQL Server 2000 Driver for JDBC のインストール方法』を参照してください。

Microsoft SQL Server 2000 Driver for JDBC をインストールすると、接続 URL または JNDI データ ソースの 2 とおりの方法でプログラムからデータベースに接続できます。この資料では、接続 URL を使用してデータベース接続を構成およびテストする方法について説明します。

データベースに接続する方法の 1 つは、DriverManager クラスの getConnection メソッドを使用して JDBC Driver Manager 経由で接続する方法です。URL、ユーザー名、およびパスワードを含む文字列パラメータを使用するのが、このメソッドを使用する最も簡単な方法です。ここでは、JDBC プログラムから Microsoft SQL Server 2000 Driver for JDBC を読み込む方法について説明します。

先頭に戻る

CLASSPATH 変数を設定する方法

CLASSPATH 変数には、Microsoft SQL Server 2000 Driver for JDBC の .jar ファイルが含まれている必要があります。CLASSPATH 変数は、コンピュータ上にある JDBC ドライバを検索する際に Java 仮想マシン (JVM) で使用される検索文字列です。JDBC ドライバが CLASSPATH 変数に設定されていないと、ドライバを読み込むときに次のエラー メッセージが表示されます。
java.lang.ClassNotFoundException: com/microsoft/jdbc/sqlserver/SQLServerDriver
以下のエントリが含まれるように、システムの CLASSPATH 変数を設定します。
  • \Your installation path\Lib\Msbase.jar
  • \Your installation path\Lib\Msutil.jar
  • \Your installation path\Lib\Mssqlserver.jar
CLASSPATH 変数の構成例を次に示します。
CLASSPATH=.;c:\program files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;c:\program files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;c:\program files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar
先頭に戻る

ドライバを登録する方法

ドライバを登録するには、読み込むドライバを JDBC Driver Manager に指定します。class.forName 関数を使用してドライバを読み込む場合、ドライバ名を指定する必要があります。これは、次に示す Microsoft SQL Server 2000 Driver for JDBC のドライバ名です。
com.microsoft.jdbc.sqlserver.SQLServerDriver
次のサンプル コードでは、ドライバの登録方法を示します。
Driver d = (Driver)Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();				
先頭に戻る

接続 URL を渡す方法

データベースの接続情報を接続 URL の形式で渡す必要があります。Microsoft SQL Server 2000 Driver for JDBC の URL のテンプレートは次のとおりです。データベースに応じて値を置き換えます。
jdbc:microsoft:sqlserver://servername:1433
次のサンプルコードでは、接続 URL を指定する方法を示します。
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433", "userName", "password");				
サーバー名の値には IP アドレスまたはホスト名を指定できます (ホスト名がネットワークにより IP アドレスに解決されると想定した場合)。ネットワークにより名前解決されるかどうかを確認するには、ホスト名に対して ping を実行し、正しい IP アドレスが返されることを確認します。

サーバー名の後にある数値は、データベースが受信待ちをしているポート番号です。上の値は、サンプルのデフォルト値であるため、データベースで使用されているポート番号に置き換える必要があります。

接続 URL パラメータの完全な一覧については、Microsoft SQL Server 2000 Driver for JDBC の HTML ヘルプ ファイルまたはオンライン ガイドの「Connection String Properties」を参照してください。

先頭に戻る

接続をテストするためのサンプル コード

次のサンプル コードを使用すると、データベースに接続され、データベース名、バージョン、および使用できるカタログが表示されます。サーバーのプロパティは、使用しているサーバーの値に置き換えます。
import java.*;public class Connect{     private java.sql.Connection  con = null;     private final String url = "jdbc:microsoft:sqlserver://";     private final String serverName= "localhost";     private final String portNumber = "1433";     private final String databaseName= "pubs";     private final String userName = "user";     private final String password = "password";     // Informs the driver to use server a side-cursor,      // which permits more than one active statement      // on a connection.     private final String selectMethod = "cursor";           // Constructor     public Connect(){}          private String getConnectionUrl(){          return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";     }          private java.sql.Connection getConnection(){          try{               Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");                con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);               if(con!=null) System.out.println("Connection Successful!");          }catch(Exception e){               e.printStackTrace();               System.out.println("Error Trace in getConnection() : " + e.getMessage());         }          return con;      }     /*          Display the driver properties, database details      */      public void displayDbProperties(){          java.sql.DatabaseMetaData dm = null;          java.sql.ResultSet rs = null;          try{               con= this.getConnection();               if(con!=null){                    dm = con.getMetaData();                    System.out.println("Driver Information");                    System.out.println("\tDriver Name: "+ dm.getDriverName());                    System.out.println("\tDriver Version: "+ dm.getDriverVersion ());                    System.out.println("\nDatabase Information ");                    System.out.println("\tDatabase Name: "+ dm.getDatabaseProductName());                    System.out.println("\tDatabase Version: "+ dm.getDatabaseProductVersion());                    System.out.println("Avalilable Catalogs ");                    rs = dm.getCatalogs();                    while(rs.next()){                         System.out.println("\tcatalog: "+ rs.getString(1));                    }                     rs.close();                    rs = null;                    closeConnection();               }else System.out.println("Error: No active Connection");          }catch(Exception e){               e.printStackTrace();          }          dm=null;     }               private void closeConnection(){          try{               if(con!=null)                    con.close();               con=null;          }catch(Exception e){               e.printStackTrace();          }     }     public static void main(String[] args) throws Exception       {          Connect myDbTest = new Connect();          myDbTest.displayDbProperties();       }}				
このコードが正常に実行されると、出力は次のようになります。
Connection Successful!Driver Information        Driver Name: SQLServer        Driver Version: 2.2.0022Database Information        Database Name: Microsoft SQL Server        Database Version: Microsoft SQL Server  2000 - 8.00.384 (Intel X86)        May 23 2001 00:02:52        Copyright (c) 1988-2000 Microsoft Corporation        Desktop Engine on Windows NT 5.1 (Build 2600: )Avalilable Catalogs        catalog: master        catalog: msdb        catalog: pubs        catalog: tempdb					
先頭に戻る

接続に関する基本的なトラブルシューティング

SQL Server に接続する際に発生する一般的なエラー メッセージは以下のとおりです。
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer] ユーザー 'user' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。
このエラー メッセージは、SQL Server 2000 の認証モードが Windows 認証モードに設定されている場合に表示されます。Microsoft SQL Server 2000 Driver for JDBC では Windows NT 認証を使用した接続がサポートされていません。SQL Server の認証モードを、Windows 認証と SQL Server 認証の両方をサポートする混合モードに設定する必要があります。
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]This version of the JDBC driver only supports Microsoft SQL Server 2000. You can either upgrade to SQL Server 2000 or possibly locate another version of the driver.
このエラー メッセージは、SQL Server 2000 より前のバージョンの SQL Server に接続すると表示されます。Microsoft SQL Server 2000 Driver for JDBC では、SQL Server 2000 との接続のみがサポートされます。
先頭に戻る
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 313100 (最終更新日 2004-01-09) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。
プロパティ

文書番号:313100 - 最終更新日: 02/15/2011 20:18:00 - リビジョン: 3.4

  • kbsqlmanagementtools kbhowtomaster KB313100
フィードバック