1. JDBC API
- 1.1. JDBCドライバ
- 1.2. データベースへの接続
- 1.3. select文の実行(java.sql.Statementとjava.sql.ResultSet)
1.3. select文の実行(java.sql.Statementとjava.sql.ResultSet)
基本的なSQLクエリーの実行方法について説明します。移行の章では特別な指定が無い限り、以下のテーブルを使用します。また実習課題のため、手元のPostgreSQLデータベースに同じテーブルを作成して下さい。
productテーブルp_num | int primary key |
---|---|
p_name | text not null |
type | text not null |
price | int not null |
try{ Statement statement=connection.createStatement(); String sql="select p_num,p_name,type,price from product"; ResultSet result=statement.executeQuery(sql); while(result.next()){ String p_num=result.getString(1); String p_name=result.getString(2); String type=result.getString(3); int price=result.getInt(4); System.out.println(p_num+"\t"+p_name+"\t"+type+"\t"+price); } }catch(SQLException e){ e.printStackTrace(); System.exit(1); } } }
SQL文の実行には「java.sql.Statement」オブジェクトを使用します。このオブジェクトは「Connection」オブジェクトの「createStatement」メソッドで取得します(19行目)。
「Statement」インタフェースの「executeQuery」メソッドは、引数で指定されたSQL文をデータベースで実行するメソッドです。何のエラーもなく処理が完了すると、結果を「java.sql.ResultSet」オブジェクトで返します(21行目)。
「ResultSet」はselect文の実行結果を格納するインタフェースで、結果を取得するためのメソッドを提供します。「ResultSet」オブジェクトは初期状態では、最初の行の1つ前に位置しています。したがって「next」メソッド(次の行に移動する)で最初の行に移動してやる必要があります。「next」メソッドは、該当する行が存在する場合にのみ「true」を返します。サンプル22行目のように、結果の表を先頭から最後尾まで順に辿っていく事ができます。
該当する行の任意の列の取得には、データのタイプに応じて「get???」メソッドを使用します。テキストの場合は「getString」、整数の場合は「getInt」「getLong」、日付の場合には「getDate」を使用します。テーブルの型とは違う型でデータを取り出すことも可能ですが、あまりしない方が良いでしょう。引数には列を指定しますが、列番号でもカラム名でもどちらでも構いません。サンプルでは列番号を使用しています(23〜26行目)。
(実習課題2)
以下のGUIアプリケーションを作成しなさい。
- ウィンドウに含まれるコンポーネントは、テーブルのみ。
- データベースに接続し、「product」テーブルのデータをテーブルに使用させること。