目次へ

1. JDBC API

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」テーブルのデータをテーブルに使用させること。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp