2.7.4 パラメタを利用した要素の一括更新

SQLのUPDATE文又はINSERT文に?パラメタを利用して要素を設定する方法です。更新の単位は,要素全体になります。この方法は,詳細版だけで利用できます。

SQL文は,DBPreparedStatementクラスを使います。繰り返し列を含まないレコードの更新と異なるのは, DBRArrayDataクラスを利用して要素の値を設定する点です。

  1. DBRArrayDataFactoryオブジェクトのCreateArrayDataメソッドに繰り返し列の型を指定しDBRArrayDataオブジェクトを生成します。
  2. 要素数分の領域をDBRArrayDataオブジェクトのCreateメソッドに繰り返し列の型を指定して確保し,SetDataメソッドで要素の値を設定します。
  3. SetParamメソッドで?パラメタに繰り返し列のデータを設定します。
  4. ExecuteUpdateメソッドでSQL文を実行します。

なお,繰り返し列全体を?パラメタとした場合,「2要素目だけ」という更新はできません。必ず全体を更新することになります。2要素目だけというような更新をする場合は,UPDATE文でARRAY句を利用してください。

(例)UPDATE文の繰り返し列に?パラメタを使用し更新する。

//////////////////////////////////////////////////////////////
/// SQLの実行(レコードの更新)-
/// DBPreparedStatementクラスで?パラメタのあるUPDATE文を指定

  // DBPreparedStatementオブジェクトの生成
pStatement = pConnect->CreatePreparedStatement(
                   "UPDATE TABLE1 SET F1=? WHERE ID='CPP'");
  // SQL文の解析
pStatement -> Execute();
  // Factoryオブジェクトの生成
DBRArrayDataFactory * pFactory = pConnect->
                                      GetArrayDataFactory();

DBRArrayDataPtr pArray =pFactory->
                          CreateArrayData(COL_TYPE_CHAR,10);
pArray->Create(2);
pArray->SetData(1,"NET");
pArray->SetData(2,"DB");
pStatement->SetParam(1,pArray);
pStatement->ExecuteUpdate();