- 1.1. JDBCドライバ
- 1.2. データベースへの接続
- 1.3. select文の実行(java.sql.Statementとjava.sql.ResultSet)
1.2. データベースへの接続
この節ではデータベースへの接続方法について説明します。これ節以降、しばらくデータベースとして「PostgreSQL7.3」を対象として説明します。
JDBC APIは「java.sql」パッケージにまとめられています。ですから特別、何もしなくてもJDBC APIは利用できますが、実際にデータベースと接続するためには使用するJDBCドライバをクラスパスに含める必要があります。PostgreSQLの場合は、「postgresql.jar」というファイル名でJDBCドライバが提供されていますので、それをクラスパスに含めるようにして下さい。
import java.sql.*; public class DataBaseSample{ public static void main(String args[]){ try{ Class.forName("org.postgresql.Driver"); }catch(ClassNotFoundException e){ e.printStackTrace(); System.exit(1); } Connection connection; try{ connection=DriverManager.getConnection("jdbc:postgresql:Training","postgres",""); }catch(SQLException e){ e.printStackTrace(); System.exit(1); } (以下次節に続く)
JDBC APIを利用してデータベースにアクセスするためには、JDBCドライバを呼び出す必要があります。6行目がその処理を行っている部分で、「java.lang.Class」クラスの「forName」メソッドで呼び出しを行っています。このメソッドは引数で指定されたクラスをアプリケーションにロードするメソッドで、サンプルでは「org.postgresql.Driver」クラスをロードしています。このクラスは「java.sql.Driver」インタフェースを実装している、PostgreSQLのJDBCドライバ本体のクラスです。
データベースへの接続には「java.sql.DriverManager」クラスの「getConnection」メソッドを使用します。このクラスはJDBCドライバを管理するクラスです。「getConnection」メソッドでは、アプリケーションにロードされているJDBCドライバの中から、指定されたデータベースへ接続するのに適切なドライバを探し出し、そのドライバでデータベースへの接続を試みます。ドライバが見つからない場合、接続に失敗した場合には「java.sql.SQLException」例外を発生します。
接続を試みるデータベース名は「jdbc:(サブプロトコル名):(サブ名)」の形式で指定します。「サブプロトコル名」「サブ名」の部分をどのように指定するかは、データベースによって決まっています。PostgreSQLの場合は以下の3形式のいずれかを使用します。
jdbc:postgresql:(データベース名) jdbc:postgresql://(ホスト名)/(データベース名) jdbc:postgresql://(ホスト名):(ポート番号)/(データベース名)
ホスト名を省略した場合は「localhost」が、「ポート番号」を省略した場合はデフォルトのポート番号(5432)が使用されます。「getConnection」メソッドの2・3番目の引数は接続に使用するユーザ名とそのパスワードです。接続に成功すると「java.sql.Connection」オブジェクトを返します。
(実習課題1)
以下のプログラムを作成しなさい。
- 任意のPostgreSQLのデータベースに接続するアプリケーション。
- 接続するデータベース、接続の際に使用するユーザ、およびそのパスワードはプログラムの実行時に引数として指定する事。
- 接続に成功した場合はその旨を表示してアプリケーションを終了すること。