SQLのUPDATE文を利用して,繰り返し列の全体又は特定の要素をDBRArrayDataクラスを使用しないで更新できます。更新には,繰り返し列に要素を追加する,既存の要素を更新する,既存の要素を削除するの三つがあります。更新するときは,操作対象の要素の位置と値をUPDATE文に直接指定します。
また,INSERT文では,繰り返し列を含むレコードを追加することもできます。
簡易版の場合DBRDatabaseクラス,詳細版の場合DBStatementクラス又はDBConnectionクラスを使ってSQL文を実行します。詳細版では,パラメタを使ったSQL文も指定できます。
UPDATE文では,要素の追加にADD句を使うことにより,要素の最後に要素を追加するこでがでます。
(例1)繰り返し列F1の要素の最後に100を追加(ADD句)する。要素位置の最後は,*(アスタリスク)で表します。
/////////////////////////////////////////////////////////////
/// SQLの実行(要素の追加) - DBStatementクラスでUPDATE文を指定
// DBStatementオブジェクトの生成
pStatement = pConnect->CreateStatement();
// SQL文の実行(繰り返し列の最後の要素位置に追加)
pStatement->Execute("UPDATE TABLE1 ADD F1[*]=ARRAY [100]
WHERE F2=300");
(例2)?パラメタを使用し繰り返し列F1の要素の最後に要素を追加(ADD句)する。
//////////////////////////////////////////////////////////////
/// SQLの実行(要素の追加)
/// - DBPreparedStatementクラスで?パラメタのあるUPDATE文を指定
// DBPreparedStatementオブジェクトの生成
pStatement = pConnect->CreatePreparedStatement(
"UPDATE TABLE1 ADD F1[*] =ARRAY[?] WHERE F2=?");
// SQL文の解析
pStatement -> Execute();
// ?パラメタへの値の設定
pStatement->SetParam(1,100);
pStatement->SetParam(2,300);
// 更新の実行
pStatement->ExecuteUpdate();
UPDATE文では,要素の更新にSET句を使い,列名の直後に[要素番号]を指定することにより,特定の要素を変更することができます。
(例) 繰り返し列F1の要素位置1の要素の値を500に更新(SET句)する。
//////////////////////////////////////////////////////////////
/// SQLの実行(要素の更新) - DBStatementクラスでUPDATE文を指定
// DBStatementオブジェクトの生成
pStatement = pConnect->CreateStatement();
// SQL文の実行(要素番号1の値を更新)
pStatement->Execute("UPDATE TABLE1 SET F1[1]=ARRAY [500]
WHERE F2=300");
(例)?パラメタを使用し,繰り返し列F1の要素位置1の要素の値を更新(SET句)する。
//////////////////////////////////////////////////////////////
/// SQLの実行(要素の更新)
/// - DBPreparedStatementクラスで?パラメタのあるUPDATE文を指定
// DBPreparedStatementオブジェクトの生成
pStatement = pConnect->CreatePreparedStatement(
"UPDATE TABLE1 SET F1[1] =ARRAY[?] WHERE F2=?");
// SQL文の解析
pStatement -> Execute();
// ?パラメタへの値の設定
pStatement->SetParam(1,100);
pStatement->SetParam(2,300);
// 更新の実行
pStatement->ExecuteUpdate();
UPDATE文では,要素の削除にDELETE句を使い,列名の直後に[要素番号]を指定することにより,特定の要素を削除することができます。
(例)繰り返し列F1の1番目の要素を削除(DELETE句)する。
削除後,要素位置2以降の要素がある場合は,一つずつ位置番号が繰り上がります。
//////////////////////////////////////////////////////////////
/// SQLの実行(要素の削除) - DBStatementクラスでUPDATE文を指定
// DBStatementオブジェクトの生成
pStatement = pConnect->CreateStatement();
// SQL文の実行(要素位置1の値を削除)
pStatement->Execute("UPDATE TABLE1 DELETE F1[1] WHERE F2=300");
(例)?パラメタを使用し,繰り返し列F1の要素位置1を削除(DELETE句)する。
削除後,要素位置2以降の要素がある場合は,一つずつ位置番号が繰り上がります。
//////////////////////////////////////////////////////////////
/// SQLの実行(要素の削除)
/// - DBPreparedStatementクラスで?パラメタのあるUPDATE文を指定
// DBPreparedStatementオブジェクトの生成
pStatement = pConnect->CreatePreparedStatement(
"UPDATE TABLE1 DELETE F1[1] WHERE F2=?");
// SQL文の解析
pStatement -> Execute();
// ?パラメタへの値の設定
pStatement->SetParam(1,300);
// 更新の実行
pStatement->ExecuteUpdate();
INSERT文では,繰り返し列のデータをARRAY句の後に要素データを指定します。
(例)最初の繰り返し列には100,200の要素を持ち,次の繰り返し列にはA1,A2の要素を持つレコードを追加する。
//////////////////////////////////////////////////////////////
/// SQLの実行(追加) - DBStatementクラスでINSERT文を指定
// DBStatementオブジェクトの生成
pStatement = pConnect->CreateStatement();
// SQL文の実行
pStatement->Execute("INSERT INTO TABLE1
VALUES (ARRAY[100,200],ARRAY['A1','A2'])");