データベース千夜一夜第14回

プログラミングとSQL(2)
~レコードの削除処理
長谷川裕行
有限会社 手國堂

テーブルを書き換えるSQLの実行

ここまではSELECT命令によるSQLを試してきました。次は、テーブルの内容を書き換えるSQLの実行を試してみましょう。


- ExecuteNonQueryメソッド -

データベースに対する変更を伴うDELETEやUPDATEなどの命令を実行するには、CommandオブジェクトのExecuteNonQueryメソッドを使います。

まず、CommandTextにSQLを設定します。ここまではSELECT命令の場合と変わりません。SQLがSELECTではなくDELETEやUPDATE、INSERTなどデータベースに対する変更を伴う命令で構成されている場合は、DataReaderでレコードセットを読み取る代わりに、ExecuteNonQueryメソッドでSQLを実行します。

ExecuteNonQueryメソッドは、DELETEやUPDATEなどの命令の他、テーブルやビューなどデータベースを構成するオブジェクトを生成したり削除したりするようなSQLを実行する場合にも用います(テーブルの生成や削除を行うSQLについては、回を追って紹介します)。


- ExecuteNonQueryの引数と戻り値 -

レコードセットを取得するSQLにはDataReaderのReadメソッドを用い、レコードセットを取得せずデータベースを変更するSQLには、CommandのExecuteNonQueryメソッドを用いる――と、捉えておきましょう。

ExecuteNonQueryメソッドには引数はありません。CommandTextに格納されたSQLを実行するだけです。

DELETE、UPDATE、INSERT命令を使ったSQLをExecuteNonQueryメソッドで実行した場合、それらの命令によって処理されたレコード数(DELETE命令なら削除されたレコード数、UPDATE命令なら更新されたレコード数、INSERT命令なら挿入されたレコード数)が返されます。それ以外の命令を実行した場合は-1が返ります。


- テスト用テーブルの準備 -

ExecuteNonQueryメソッドの例として、「指定した商品情報を1件削除する」処理を作ってみます。

テーブルには「商品_mr」の代わりに同じ構造で同じレコードを記録した「商品_dmy」を使います。これまでに「商品_dmy」の内容を書き換えていた場合は、Enterprise Managerで一旦テーブルを削除してから、クエリアナライザで以下のSQLを実行してください。

  SELECT * INTO 商品_dmy FROM 商品_mr

なお「商品_dmy」の作り方とSELECT INTO命令については、本コラムの第8回(データの加工命令(2)~レコードの削除と削除処理の注意点)で紹介しています。また、今回のサンプルに入っている“ex00.sql”に上記のSQLが記録してあるので、クエリアナライザでそれを開いて実行しても構いません。



トップページ
SqlConnectionとOleDbConnectionの違い(1)
SqlConnectionとOleDbConnectionの違い(2)
テーブルを書き換えるSQLの実行
ExecuteNonQueryメソッド
ExecuteNonQueryの引数と戻り値
テスト用テーブルの準備
サンプルアプリケーションの仕様
サンプルアプリケーションの作成
あとがき
Copyright © MESCIUS inc. All rights reserved.