8.2. ドライバの使用

8.2.1. JDBCのインポート

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

import java.sql.*;

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

8.2.2. ドライバの読み込み

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

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

Class.forName("org.postgresql.Driver");
これでドライバが読み込まれます。読み込まれると、ドライバは自動的に自分自身をJDBCに登録します。

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

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

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

java -Djdbc.drivers=org.postgresql.Driver example.ImageViewer
この例では、JVMはその初期化段階の一部としてドライバの読み込みを試みます。読み込みが完了したところで、ImageViewerが起動します。

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

最後に、コード内でConnectionを開こうとした時に、利用できるドライバが無い(No driver available)というSQLの例外(SQLException)が送出された場合、大抵はドライバがクラスパスに無いこと、もしくはパラメータの値が正しくないことが原因です。

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

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

ここで:

host

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

port

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

database

データベース名。

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

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

8.2.4. 接続を閉じる

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

db.close();