接続
まずはDBに接続するまでの手順について記述する.JDBCを使用する場合は,いきなり接続するということはできない.libpqを使用する場合はコンパイル時にライブラリと静的リンクしたが,JDBCの場合は,クラスファイルのロードからソースで指定する必要がある.
DBに接続して切断するだけのサンプルを以下に示す.
では実行.
$ java JDBCConnectSample jdbc:postgresql://dbserver/firstdb matsu hogefuga Connect to jdbc:postgresql://dbserver/firstdb User : matsu Pwd : hogefugaなんだかつまらない出力だが,うまく実行できればサーバ側で以下のようなログが出る(※).
Apr 5 22:29:48 dbserver postgres[390]: [1] DEBUG: connection: host=xxx.xxx.xxx.xxx user=matsu database=firstdbJDBCを使用してDBに接続する際の処理の流れは以下になる.
- JDBCドライバのロード
- DriverManagerに接続要求を出す.
※ 本当に出るか出ないかはサーバのログレベルによる(たぶん).
JDBCを使用するには以下のimportが必要である.
JDBCが上位APへの統一的なAPIを提供し,DBサーバによる差異はJDBC,JDBCドライバ間で吸収する.これにより上位APはDBサーバの違いに煩わされることなくDBアクセスプログラミングを楽しむことができる.
import java.sql.*;これはJDKに含まれている.DBサーバに接続するためのJDBCドライバはDB毎に実装があり,PostgreSQL用JDBCドライバのロードは次節に記述する.JDBCとJDBCドライバ,上位APとの関係を以下に示す.
サンプルではstatic初期化ブロックにてJDBCドライバをプログラムで明示的にロードした.
try {
Class.forName (PG_JDBC_DRIVER);
} catch (ClassNotFoundException e) {
System.err.println("JDBCドライバ " + PG_JDBC_DRIVER + " がみつかりません.");
System.exit(-1);
}
ロードするクラスはorg.postgresql.Driverである.これがPostgreSQL用JDBCドライバの実装である.
JDBCドライバのロードができたら,あとは接続である.
try {
// 接続
Connection dbConnection = DriverManager.getConnection(url, user, pwd);
// 切断
dbConnection.close();
} catch (SQLException e) {
System.err.println("Failed to connect");
System.exit(-1);
}
多くのJDBCがらみのメソッドはSQLExceptionを投げる可能性がある.ここでもtry-catchしている.

