31.2. ドライバの初期化

本節では、JDBCをプログラムに読み込み、初期化する方法を説明します。

31.2.1. JDBCのインポート

JDBC を使う全てのソースでは、java.sql パッケージをインポートする必要があります。 次のように使います。

import java.sql.*;

注意: org.postgresql パッケージをインポートしないでください。そうした場合、javac が混乱に陥りソースをコンパイルすることができません。

31.2.2. ドライバの読み込み

データベースに接続する前に、ドライバを読み込む必要があります。読み込みには 2 つの方法があり、どちらが最適なのかは作成するコードに依存します。

第一の方法は、コードの中で暗黙的に Class.forName() メソッドを使ってドライバを読み込みます。PostgreSQL の場合は、次のように記述します。

Class.forName("org.postgresql.Driver");

これでドライバが読み込まれます。 読み込んでいる過程の中で、ドライバは自動的に自分自身を JDBC に登録します。

注意: ドライバが利用できない場合に forName() メソッドは ClassNotFoundException という例外を投げかけます。

これは最も一般的なメソッドですが、そのコードは PostgreSQL だけでしか使えなくなります。後に、そのコードを利用して他のデータベースにアクセスするかもしれない、そして、PostgreSQL 固有の拡張機能を使用しないのならば、次に紹介する 2 番目の方法をお勧めます。

2 番目の方法は、-D オプションを使用して、ドライバをパラメータとして JVM の起動時に渡すことです。 例を以下に示します。

java -Djdbc.drivers=org.postgresql.Driver example.ImageViewer

この例では、JVM はその初期化段階の一つの経過でドライバの読み込みを試みます。読み込みが完了したところで、ImageViewer が起動します。

そこでこの方式を採用すればコードを再コンパイルしないで他のデータベースパッケージにも使うことができるようになるため優れています。唯一の変更点は接続のための URL だけです。 これについては、次節で説明します。

最後に注意点ですが、コード内で Connection を開こうとした時に、利用できるドライバがない (No driver available) という SQLException 例外が発生した場合、たいていはドライバがクラスパスにないこと、もしくはパラメータの値が正しくないことが原因です。

31.2.3. データベースへの接続

JDBC を使用する場合、データベースは URL(Uniform Resource Locator)で表されます。PostgreSQL では次の形式のどれかになります。

パラメータの意味を以下に示します。

host

サーバのホスト名です。デフォルトは localhost です。IPv6 アドレスを指定するためには、以下のように host を角括弧で括る必要があります。

jdbc:postgresql://[::1]:5740/accounting

port

サーバが監視しているポート番号です。デフォルトは PostgreSQL の標準的なポート番号(5432)です。

database

データベース名です。

接続するために、JDBC から Connection のインスタンスを取得しなければなりません。これには、次のように DriverManager.getConnection() メソッドを使います。

Connection db = DriverManager.getConnection(url, username, password);

31.2.4. 接続を閉じる

データベースへの接続を閉じるためには、単に Connectionclose() メソッドを呼びます。

db.close();

アダルトレンタルサーバー