LittleSoft J-Programming
3.4.2. データベース検索
この章では、WebSQL テーブルオブジェクトを使用してデータベースを検索し、結果を表示する手順について説明します。

WebSQL テーブルオブジェクトを設定する
WebSQL テーブルオブジェクトを作成し、SQL 文の設定、データフィールドの設定、データ取得を行います。
同時に、パラメータ(「:」で始まる項目)解析を行い自身の Params オブジェクトに必要パラメータを生成します。
オブジェクトが生成された直後は非アクティブです。この状態ではカラムの追加、データ型変更等、データ構造を定義することが可能となりますが、 データ操作そのものを行うことはできません。
「 activate 」メソッドにより、必要な初期化が行なわれデータ操作を行うことが可能となります。
/* 社員情報テーブルオブジェクト */
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();
}
}
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>
<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 」
格納されている行から、指定したカラム名の値を取得します。ページを表示する
検索結果が表示されていることを確認します。