前回は、DELETE命令によるレコードの削除を試しました。今回はフィールドの更新とレコードの追加を試してみましょう。これらのSQLは削除処理に比べて複雑になります。まず、更新処理から紹介しましょう。
- 更新と削除はほぼ共通 - レコードを更新するためにはUPDATE命令を使います。それ以外は前回のDELETE命令と同じで、CommandオブジェクトのExecuteNonQueryメソッドを発行してSQLを実行します。
更新と削除の処理は、処理の対象となるレコードを特定する基本部分の処理が共通しています。その後、対象となるレコードを削除するか、ユーザーが入力した値でフィールドの値を更新するか――という部分が異なります。
……と、言葉では簡単なのですが、アプリケーションで実際にこの処理を組み立てるには、慣れていないと戸惑う部分も少なくありません。注意すべき点は、削除を行うDELETE命令では単純に目的のレコードを指定すればよかったのに対し、値を更新するUPDATE命令ではフィールド名とそこに設定する値との組(ペア)を正しく設定しなければならない――というところです。
- 単価の改定処理 - ここでは、「商品の仕入単価と販売単価を改訂する」処理を例に説明します。
フォームは画面1のようなデザインとします。「商品ID」を入力して[検索]ボタンをクリックし、処理対象の商品を特定したら、仕入単価と販売単価を書き換えて[更新]ボタンを押す――という仕様です。
フォームのデザインも含めて、基本部分は前回紹介した削除処理と共通です。大きく変更されるのは、[削除]ボタンをクリックしたときの処理が[更新]ボタンをクリックしたときの処理に置き換わる点です。
[更新]ボタンは“btnUpdate”ですから、これをクリックしたときに実行されるプロシージャ“btnUpdate_Click”で更新処理を行います。
- 更新処理のSQLは複雑 - 削除処理ではDELETE命令を使いましたが、レコード中の特定のフィールドの値を書き換えるにはUPDATE命令を使います。実質的には、この部分のSQLを書き換えるだけで済みます。
単純に削除対象のレコードを特定すればよいDELETE命令とは異なり、UPDATE命令では特定のフィールドの値を「ユーザーの入力した値」に置き換えなければなりません。そのためのSQLを生成する処理が、削除の場合より複雑になります。
UPDATE命令の書式を確認しておきましょう。
UPDATE <テーブル名> SET <フィールド> = <値>, <フィールド> = <値> ... WHERE <条件式>
<条件式>の箇所は、以下のような書式となります。
<キーフィールド名> = <値>
|
|
|