Jdbc-db-connections
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-サンプルコードチュートリアル]を学習することをお勧めします。