Jdbc-db-connections

提供:Dev Guides
移動先:案内検索

JDBC-データベース接続

適切なドライバーをインストールしたら、JDBCを使用してデータベース接続を確立します。

JDBC接続を確立するためのプログラミングは非常に簡単です。 ここにこれらの簡単な4つのステップがあります-

  • * JDBCパッケージのインポート:* Javaプログラムに import ステートメントを追加して、必要なクラスをJavaコードにインポートします。
  • * JDBCドライバーの登録:*このステップにより、JVMは必要なドライバー実装をメモリーにロードし、JDBC要求を満たせるようにします。
  • *データベースURLの定式化:*これは、接続するデータベースを指す適切にフォーマットされたアドレスを作成します。
  • *接続オブジェクトの作成:*最後に、_DriverManager_オブジェクトの_getConnection()_メソッドの呼び出しをコーディングして、実際のデータベース接続を確立します。

JDBCパッケージのインポート

*Import* ステートメントは、コード内で参照するクラスの場所をJavaコンパイラに指示し、ソースコードの最初に配置されます。

SQLテーブルのデータを選択、挿入、更新、削除できる標準JDBCパッケージを使用するには、次の_imports_をソースコードに追加します-

import java.sql.* ; //for standard JDBC programs
import java.math.* ;//for BigDecimal and BigInteger support

JDBCドライバーの登録

使用する前に、プログラムにドライバーを登録する必要があります。 ドライバーの登録は、Oracleドライバーのクラスファイルをメモリにロードするプロセスであるため、JDBCインターフェイスの実装として利用できます。

この登録は、プログラムで1回だけ行う必要があります。 2つの方法のいずれかでドライバーを登録できます。

アプローチI-Class.forName()

ドライバを登録するための最も一般的なアプローチは、Javaの* Class.forName()*メソッドを使用して、ドライバのクラスファイルをメモリに動的にロードし、メモリを自動的に登録することです。 この方法は、ドライバー登録を構成可能かつ移植可能にするため、望ましい方法です。

次の例では、Class.forName()を使用してOracleドライバを登録します-

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

あなたは* getInstance()*メソッドを使用して非準拠のJVMを回避することができますが、次のように2つの余分な例外をコーディングする必要があります-

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("Error: access problem while loading!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("Error: unable to instantiate driver!");
   System.exit(3);
}

アプローチII-DriverManager.registerDriver()

ドライバーを登録するために使用できる2番目のアプローチは、静的* DriverManager.registerDriver()*メソッドを使用することです。

Microsoftが提供するような、JDKに準拠していないJVMを使用している場合は、_registerDriver()_メソッドを使用する必要があります。

次の例では、registerDriver()を使用してOracleドライバーを登録します-

try {
   Driver myDriver = new oracle.jdbc.driver.OracleDriver();
   DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

データベースURLの定式化

ドライバーをロードした後、* DriverManager.getConnection()*メソッドを使用して接続を確立できます。 簡単に参照できるように、オーバーロードされた3つのDriverManager.getConnection()メソッドをリストします-

  • getConnection(String url)
  • getConnection(String url、Properties prop)
  • getConnection(文字列url、文字列ユーザー、文字列パスワード)

ここで、各フォームにはデータベース URL が必要です。 データベースURLは、データベースを指すアドレスです。

データベースURLの定式化は、接続の確立に関連するほとんどの問題が発生する場所です。

次の表に、一般的なJDBCドライバー名とデータベースURLを示します。

RDBMS JDBC driver name URL format
MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname/databaseName
ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:hostname:port Number/databaseName
Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:hostname: port Number/databaseName

URL形式で強調表示されている部分はすべて静的であり、データベースの設定に従って残りの部分のみを変更する必要があります。

接続オブジェクトを作成

接続オブジェクトを作成するために、* DriverManager.getConnection()*メソッドの3つの形式をリストしました。

ユーザー名とパスワードでデータベースURLを使用する

最も一般的に使用されるgetConnection()の形式では、データベースURL、username、および_password_を渡す必要があります。

Oracleの thin ドライバーを使用していると仮定すると、URLのデータベース部分にhost:port:databaseName値を指定します。

ホスト名がamroodのTCP/IPアドレス192.0.0.1のホストがあり、Oracleリスナーがポート1521でリッスンするように構成され、データベース名がEMPである場合、完全なデータベースURLは次のようになります-

jdbc:oracle:thin:@amrood:1521:EMP

次のように、適切なユーザー名とパスワードでgetConnection()メソッドを呼び出して Connection オブジェクトを取得する必要があります-

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

データベースURLのみを使用する

DriverManager.getConnection()メソッドの2番目の形式では、データベースURLのみが必要です-

DriverManager.getConnection(String url);

ただし、この場合、データベースURLにはユーザー名とパスワードが含まれ、次の一般的な形式があります-

jdbc:oracle:driver:username/password@database

したがって、上記の接続は次のように作成できます-

String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);

データベースURLとプロパティオブジェクトの使用

DriverManager.getConnection()メソッドの3番目の形式には、データベースURLとPropertiesオブジェクトが必要です-

DriverManager.getConnection(String url, Properties info);

Propertiesオブジェクトは、キーワードと値のペアのセットを保持します。 getConnection()メソッドの呼び出し中にドライバーのプロパティをドライバーに渡すために使用されます。

前の例で作成したのと同じ接続を作成するには、次のコードを使用します-

import java.util.*;

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );

Connection conn = DriverManager.getConnection(URL, info);

JDBC接続を閉じる

JDBCプログラムの最後に、データベースへのすべての接続を明示的に閉じて、各データベースセッションを終了する必要があります。 ただし、忘れると、Javaのガベージコレクターは、古いオブジェクトをクリーンアップするときに接続を閉じます。

特にデータベースプログラミングでは、ガベージコレクションに依存することは、非常に貧弱なプログラミング手法です。 接続オブジェクトに関連付けられたclose()メソッドで常に接続を閉じる習慣を付ける必要があります。

接続が確実に閉じられるようにするには、コードに「最終」ブロックを提供できます。 例外が発生するかどうかに関係なく、_finally_ブロックは常に実行されます。

上記の開かれた接続を閉じるには、次のようにclose()メソッドを呼び出す必要があります-

conn.close();

接続を明示的に閉じると、DBMSリソースが節約され、データベース管理者が満足します。

よりよく理解するには、リンク:/jdbc/jdbc-sample-code [JDBC-サンプルコードチュートリアル]を学習することをお勧めします。