3.4.2. データベース検索
この章では、WebSQL テーブルオブジェクトを使用してデータベースを検索し、結果を表示する手順について説明します。
WebSQL テーブルオブジェクトを設定する
WebSQL テーブルオブジェクトを作成し、SQL 文の設定、データフィールドの設定、データ取得を行います。
/* 社員情報テーブルオブジェクト */
public WebSQLTable tableEmp = new WebSQLTable ();
/* コンストラクタ */
public EmpPage(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
  super(request, response);
  // 表示するテンプレートを設定
  setTemplateName("EmpPage.html");
  // SQL 文の設定
  tableEmp.setSQL("SELECT * FROM T_EMP WHERE EMP_ID > :EMP_ID");
  // データフィールドの追加
  tableEmp.addColumns(new String[]{
                "NAME","ENTER_DATE","SEX","SALARY","MEMO"});
  // フォーマットパターンの指定
  tableEmp.getColumn("ENTER_DATE").setFormatPattern("yyyy/MM/dd");
  tableEmp.getColumn("SALARY").setFormatPattern("#,##0;-#,##0");
  // コネクションの取得
  Connection conn = getConnection();
  try {
    // SQLパラメータを設定
    tableEmp.getParams().setValueAsString("EMP_ID", "0");
    // アクティブ化
    tableEmp.activate(conn);
  }
  finally {
    // コネクションのクローズ
    conn.close();
  }
}

SQL 文の設定(「 setSQL 」メソッド)

WebSQL テーブルオブジェクトの行列データを構築する基となる SQL 文設定を行います。
同時に、パラメータ(「:」で始まる項目)解析を行い自身の Params オブジェクトに必要パラメータを生成します。

データフィールドの追加(「 addColumns 」メソッド)

自身の Column セットオブジェクトに指定された名称で Column オブジェクトを追加します。

フォーマットパターンの指定(「 getColumn 」、「 setFormatPattern 」メソッド)

「 getColumn 」メソッドで自身の Column セットオブジェクトから指定された Column オブジェクトを取得し、「 setFormatPattern 」メソッドで フォーマットを設定します。

パラメータの設定(「 getParams 」、「 setValueAsString 」メソッド)

「 getParams 」メソッドで自身の Params オブジェクトを取得し、「 setValueAsString 」メソッドで、指定したパラメータに値を設定します。

アクティブ化(「 activate 」メソッド)

オブジェクトは非アクティブ、アクティブの状態があります。
オブジェクトが生成された直後は非アクティブです。この状態ではカラムの追加、データ型変更等、データ構造を定義することが可能となりますが、 データ操作そのものを行うことはできません。
「 activate 」メソッドにより、必要な初期化が行なわれデータ操作を行うことが可能となります。
HTML テンプレートに変数を埋め込む
WebSQL テーブルオブジェクト変数を、HTML テンプレートに埋め込みます。
<table>
  <thead><tr><th>No</th><th>氏名</th><th>入社日</th>
              <th>性別</th><th>給与</th> <th>メモ</th></tr></thead>
  <tbody>
#foreach($emp in $tableEmp.Rows) <!-- ループ処理で 1 行ずつ $emp に格納 -->
    <tr>
      <td>$emp.rowNumber</td> <!-- 行番号を表示 -->
      <td>$emp.name</td> <!--「 NAME 」カラムの値を表示 -->
      <td>$emp.enterDate</td> <!--「 ENTRY_DATE 」カラムの値を表示 -->
      <td>$emp.sex</td> <!--「 SEX 」カラムの値を表示 -->
      <td>$emp.salary</td> <!--「 SALARY 」カラムの値を表示 -->
      <td>$emp.memo</td> <!--「 MEMO 」カラムの値を表示 -->
    </tr>
#end
  </tbody>
</table>

「 $tableEmp.Rows

WebSQL テーブルオブジェクトの行セットを表します。Foreach 構文により1行ずつ取り出して $emp に格納します。

「 $tableEmp.rowNumber

格納されている行の、WebSQL テーブルオブジェクト内での行番号を表します。

「 $tableEmp.xx

格納されている行から、指定したカラム名の値を取得します。
ページを表示する
検索結果が表示されていることを確認します。