他のバージョンの文書9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

8.2. ドライバの使用

8.2.1. JDBCのインポート

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

import java.sql.*;

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

8.2.2. ドライバの読み込み

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

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

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

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

Note: ドライバが利用できない場合に、forName() メソッドは ClassNotFoundException の例外を発生します。

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

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

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

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

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

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

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

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

ただし、

host

サーバのホスト名。デフォルトは localhost です。

port

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

database

データベース名

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

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

8.2.4. 接続を閉じる

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

db.close();