cSQLBuilder(TM) の変更履歴 2004/01/05
[V1.0.0] - 2004/01/05 リリース
【****リリース後の既知の問題****】
【問題】
repeat処理での注意点
SQLインスタンスを生成するときに,<cond>タグや<expr>タグのrepeat属性を
使用し,配列またはリストのパラメータを展開させた場合(in句の例など),
このメソッドでプレースホルダの値を再設定するときに注意することがあります。
repeatで展開された各バインド変数の変数名は,"<もとの変数名>[配列番号]"
という変数名に変換される仕様です。SQL#setVariableValuesメソッドを使用
するときに"<もとの変数名>"で配列およびリストを指定する記述では,バインド
変数の値を更新することができません。
【対応】
SQL#setVariableValuesメソッドを使用するときは"<もとの変数名>[配列番号]"を
Mapパラメータのキーにご指定ください。
次に例を示します。
はじめに
params.put("KANJI_FAMILY_NAME", new String[] {"山田", "田中", "中山"});
SQL sql = sqlBuilder.createSQL("CUSTOMER_select05", params);
というMapパラメータから生成したSQLにバインドし直すとき,
params.put("KANJI_FAMILY_NAME", new String[] {"阿部", "小泉", "山田"});
sql.setVariableValues(params);
ではなく,
params.put( "KANJI_FAMILY_NAME[0]", "阿部" );
params.put( "KANJI_FAMILY_NAME[1]", "小泉" );
params.put( "KANJI_FAMILY_NAME[2]", "山田" );
sql.setVariableValues(params);
のようになります。
【正誤】
・APIドキュメントにおいて、SQLBuilderJDOMFacadeクラスの以下のメソッドの
実装に関する記述が誤っています。
- callProcedure(Connection, String, Map)
- executeSelect(Connection, String, Map)
- executeUpdate(Connection, String, Map)
(誤)
sql = null;
sql = sqlBuilder.createSQL(id, params);
(正)
SQL sql = sqlBuilder.createSQL(id, params);