2.6.5 レコードの追加

データを追加するには,SQLのINSERT文を利用します。

次に,DBStatementクラス及びDBConnectionクラスを使用して,?パラメタを使用しない更新をする場合と, DBPreparedStatementクラスを使用して,?パラメタを使用した更新をする場合の三通りについて説明します。

<この項の構成>
(1) DBStatementクラスを使用した場合
(2) DBConnectionクラスを使用した場合
(3) DBPreparedStatementクラスを使用した場合

(1) DBStatementクラスを使用した場合

DBConnectionクラスのCreateStatementメソッドでDBStatementオブジェクトを生成します。生成されたDBStatementクラスのExecuteメソッドでSQL文を実行してデータを追加します。

//////////////////////////////////////////////////////////////
/// SQLの実行(追加) - DBStatementクラスでINSERT文を指定

  // DBStatementオブジェクトの生成
pStatement = pConnect->CreateStatement();
  // SQL文の実行
pStatement->Execute("INSERT INTO TABLE1(F1,F2)VALUES(1,100)");

(2) DBConnectionクラスを使用した場合

DBConnectionクラスのExecuteDirectメソッドでSQL文を実行してデータを追加します。

この方法は手順が簡単ですが,データをいったん検索してから追加したい場合は,DBStatementクラスを使用してください。DBConnectionクラスでは検索結果を受け取ることができないため,検索ができません。

//////////////////////////////////////////////////////////////
/// SQLの実行(追加) - DBConnectionクラスでINSERT文を指定

  // SQL文の実行
pConnect->ExecuteDirect("INSERT INTO TABLE1(F1,F2)
                                             VALUES(1,100)");

(3) DBPreparedStatementクラスを使用した場合

?パラメタを指定したINSERT文を指定し,DBConnectionクラスのCreatePreparedStatementメソッドを呼び出し,DBPreparedStatementオブジェクトを生成します。次に, ExecuteメソッドでSQL文をデータベースに通知(解析)し,SetParamメソッドで?パラメタのデータを設定します。そして,ExecuteUpdateメソッドで追加を実行します。

なお,レコードはSetInsertRowsメソッドで設定する数(一度に追加するレコード数)に従って,追加されます。一度に複数レコードを追加する場合,SetParamメソッドの引数には,レコード番号とフィールド番号及びデータ値の,計3個を指定する必要があります。

//////////////////////////////////////////////////////////////
/// SQLの実行(追加)
/// - DBPreparedStatementクラスで?パラメタのあるINSERT文を指定

  // DBPreparedStatementオブジェクトの生成
pStatement = pConnect->CreatePreparedStatement
("INSERT INTO TABLE1(F1,F2)VALUES(?,?)");
  // SQL文の解析
pStatement->Execute();
  // ?パラメタへの値の設定
pStatement->SetParam(1,1);
pStatement->SetParam(2,100);
  // 追加の実行
pStatement->ExecuteUpdate();