JDBCの基本的な使い方のメモ
最終更新日 : 07/05/06
JDBCを利用し、javaからデータベースにアクセスする方法についてのメモです。テストではPostgreSQLをDBに使いました。
☆もくじ
使用するデータベースに付属しているJDBCを使います。コンパイルオプションにこのJDBCを含めてやる必要があります。
Eclipse上では、マウスだけで、設定可能です。下のほうにやり方を書いてみました。
以下がとりあえず組んでみたサンプル
ソース中にも書いてありますが、接続先のDBにtext_tblというテーブルが存在している必要があります。あらかじめ、データベースやテーブルを作成しておいてください。
import java.sql.*; class JdbcTest { public static void main(String[] args) { System.out.println("ドライバをロードします。"); //ドライバをロードする処理。 try { //ここでクラスを指定してやると、内部でDriverManagerにドライバを登録してくれるらしいです。 /* データベース毎に、ドライバが提供されているはずなので、使うデータベースにあわせて 何を使うかを指定してやる必要がある。 PostgreSQLの場合、これでOK(PostgreSQLのドライバへのパスを指定してやる必要があります! */ Class.forName("org.postgresql.Driver"); } catch(ClassNotFoundException e) { System.out.println("ドライバのロードに失敗しました。終了します。"); return; } System.out.println("データベースへと接続を試みます"); //データベースに接続を行う処理。 Connection connect; Statement st; ResultSet res; try { //接続を行う。 connect = DriverManager.getConnection( "jdbc:postgresql://localhost:5432/postgres", "postgres", "usagi" ); /* Note:getConnectionの引数について 第1引数 URLというものらしいです。フォーマットは以下のとおりです。 jdbc:サブプロトコル://ホスト名前:ポート番号/データベース名前 第2引数 ログインするユーザー名前 第3引数 パスワード */ //問い合わせステートメント st = connect.createStatement(); //SQLで問い合わせの実行 res = st.executeQuery("SELECT * FROM text_tbl"); /* あらかじめtext_tblというテーブルがpostgresというデータベースにあることが前提。 CREATE TABLE text_tbl ( id Integer PRIMARY KEY, name TEXT NOT NULL ) として作成されているものとします。 */ //取得したResultSetの情報について取得する。 ResultSetMetaData meta = res.getMetaData(); int column_count = meta.getColumnCount(); //ResultSetのカラムの数を取得する。 int c = 1; //カラムを表示する。 System.out.print(" "); while( column_count-- > 0 ) { /* getColumnNameは数値指定の範囲が1〜なので注意。ゼロを指定すると 例外を投げます。 */ System.out.print(meta.getColumnName(c++)+" "); } System.out.println(""); //問い合わせ結果を出力する。 while( res.next() ) { System.out.print(res.getRow()+" : "); //行番号を出力 System.out.println(res.getString("id") + "\t" + res.getString("name")); } /* nextメソッドについて カーソルを次に移動させる機能です。 ResultSetのカーソルは、初期状態では、最初の行の手前を指しているため、最初にnext を呼び出し、それからデータを取得すると、最初の行のデータが取得できます。 データが無くなるとfalseを返します。 */ //リソース開放 res.close(); st.close(); connect.close(); } catch(SQLException e) { System.out.println("問い合わせ中、エラーが発生しました。終了します。"); return; } System.out.println("\n正常に終了しました。"); } } |
ちなみに実行結果は以下のとおりです。
text_tblに対し
INSERT INTO text_tbl VALUES(10,'nyannyan')
と
INSERT INTO text_tbl VALUES(10,'wanwan')
を実行した状態のtexT_tblに対する問い合わせ結果です。
ドライバをロードします。 データベースへと接続を試みます id name 1 : 10 nyannyan 2 : 11 wanwan 正常に終了しました。 |
Eclipse上で、使用するjarファイルをクラスパスに含めてやればOKです。
以下の例は、PostgreSQLに接続する際、必要なjarファイルをクラスパスに追加しているところです。