DABroker for C++

[目次][用語][索引][前へ][次へ]

2.5.4 レコードの削除

レコードの削除方法には,検索したレコードを削除する方法(ResultSetを利用)と,DELETE文で直接削除する方法があります。

レコードの削除が完了した後でCommitメソッドを発行してデータベースの更新情報を確定させる必要があります。

<この項の構成>
(1) 検索したレコードの削除
(2) DELETE文を利用した削除

(1) 検索したレコードの削除

レコードを検索し削除するためには,更新目的でレコードを検索する必要があります。検索されたレコードはResultSetに1レコードだけ格納され,このレコードを削除するには,Editメソッドで削除準備を指示し,Deleteメソッドで更新を指示します。複数のレコードを処理する場合には,Nextメソッドで次のレコードを読込み,この処理を繰り返す必要があります。

 
////////////////////////////////////////////////////////////
/// SQLの実行(削除)
  DBRResultSet *pRs1(pDB1);      // オブジェクトの生成 
 
   // 更新目的で検索
   pRs1->Execute("SELECT F1,F2 FROM TABLE1", TYPE_EXCLUSIVE);
      
   pRs1->Open();                 // レコードの検索
   while(!pRs1->IsEOF())  
   {
      pRs1->Delete();            // 削除のためのDeleteメソッドの呼び出し
      pRs1->Next();      // Nextメソッドにより次のレコードの読み込み
   }
   pDB1->Commit();               // トランザクションのコミット
    .....

注意事項
接続するDBMSがSQL Serverの場合,CloseメソッドでResultSetを削除してからCommitメソッドを呼出してください。Closeメソッドを呼ばないと排他ロックが解除されません。

(2) DELETE文を利用した削除

DELETE文を使ってレコードを削除できます。これは,既に削除するレコードが特定できる場合に,DELETE文で削除するレコードを指定する方法です。DELETE文を利用してレコードを削除するにはDBRDatabaseクラスのExecuteDirectメソッドを使用します。

 
//////////////////////////////////////////////////////////////
/// SQLの実行(削除) 
     pDB1->ExecuteDirect("DELETE FROM TABLE1 WHERE F1=100");
     pDB1->Commit();