ここまでは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が記録してあるので、クエリアナライザでそれを開いて実行しても構いません。
|
|
|