[HOWTO] Microsoft JDBC の使用方法

文書翻訳 文書翻訳
文書番号: 313100
すべて展開する | すべて折りたたむ

目次

概要

この資料では、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.0022
Database 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 - 最終更新日: 2011年2月15日 - リビジョン: 3.4
キーワード:?
kbsqlmanagementtools kbhowtomaster KB313100
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com