Share via


[SQL 生成の詳細オプション] ダイアログ ボックス

更新 : 2007 年 11 月

アダプタに対して SQL ステートメントまたはストアド プロシージャを作成する方法を制御できます。データ ウィザードのいずれかで [SQL ステートメントの生成] ページの [詳細オプション] ボタンをクリックすると、このダイアログ ボックスが表示されます。このダイアログ ボックスのオプションはすべて、CustomersTableAdapter.Update(DataTable) などの更新プロシージャの一部として呼び出されるステートメントまたはプロシージャに関係します。

ユーザー インターフェイス要素の一覧

  • [INSERT、UPDATE、および DELETE ステートメントの生成]
    これをオンにすると、ウィザードでは、アダプタの UpdateCommand、InsertCommand、および DeleteCommand の各オブジェクトに対する SQL ステートメントまたはストアド プロシージャが作成されます。生成されるステートメントまたはプロシージャの詳細については、ウィザードのクエリの種類の選択ペインで制御されます。このチェック ボックスをオフにすると、ダイアログ ボックスの残りのオプションは使用できなくなり、適用されません。

    このチェック ボックスをオフにするのは、普通、次のような場合です。

    • データ ソースからデータを読み取るためだけにアダプタを使い、書き込みには使用しない場合。このチェック ボックスをオフにすると、フォームまたはコンポーネントのコードが少なくなります。

    • ウィザードが終了した後、自分でコマンドを記述する場合。

    チェック ボックスをオフにし、UpdateCommand、InsertCommand、または DeleteCommand の各オブジェクトに対するステートメントまたはストアド プロシージャを生成しない場合は、データ アダプタの Update メソッドを呼び出しても何も行われません。

  • [オプティミスティック同時実行制御]
    オンにすると、ウィザードは、更新されているレコードのすべての列の値をデータベース内の対応するレコードと一致させる WHERE 句を含む SQL コマンドを生成します。

    2ft8f67x.alert_note(ja-jp,VS.90).gifメモ :

    このオプションは、[INSERT、UPDATE、および DELETE ステートメントの生成] チェック ボックスがオンになっている場合にだけ使用できます。

    たとえば、このオプションを使って生成される UPDATE ステートメントの構文は次のようになります。

    UPDATE Customers
    SET CustomerID = ?, CompanyName = ?, Phone = ?
    WHERE (CustomerID = ?) AND (CompanyName = ?) AND 
          (Phone = ? OR ? IS NULL AND Phone IS NULL);
    

    このチェック ボックスをオフにすると、構文は次のようになります。

    UPDATE Customers
    SET CustomerID = ?, CompanyName = ?, Phone = ?
    WHERE (CustomerID = ?)
    

    各列の値をチェックすることによる影響として、データセットを読み取った後で他のユーザーがレコードを変更したことにより列が変更された場合、コマンドはエラーになります。このオプションを設定せず、WHERE 句が単純にレコードを特定するだけの場合は、そのレコードを更新すると、ほかのユーザーが行った変更が警告なしにオーバーライドされる場合があります。

    データセット更新時の同時実行チェックの詳細については、「ADO.NET におけるデータ同時実行制御の概要」を参照してください。

  • [データ テーブルの更新]
    オンにすると、ウィザードは、それぞれの Update コマンドおよび Insert コマンドに対して Select ステートメントを生成します。

    2ft8f67x.alert_note(ja-jp,VS.90).gifメモ :

    このオプションは、[INSERT、UPDATE、および DELETE ステートメントの生成] チェック ボックスがオンになっている場合にだけ使用できます。

    Select ステートメントは、アダプタ内の対応するコマンド オブジェクトに追加されて、Update コマンドまたは Insert コマンドが終了した直後に実行されます。Select ステートメントは、ただ 1 つのレコード、つまり更新されたばかりのレコードの更新バージョンを返すように構成されます。

    2ft8f67x.alert_note(ja-jp,VS.90).gifメモ :

    ステートメントをセミコロン (;) で区切ることにより、アダプタのコマンド オブジェクトの CommandText プロパティに複数のステートメントを追加できます。

    更新後のレコードを取得すると、そのレコードの更新された列の値がデータセットに書き込まれます。次の列も対象になります。

    • データベースが既定値を格納する列

    • 自動インクリメントされる列

    • タイムスタンプ列

    • データベース トリガの結果によって影響を受ける列

    このオプションを指定すると、更新のたびに 2 つのステートメント (更新ステートメントとその後の Select ステートメント) が実行されるので、データベース内のほとんどのレコードが更新される場合は非効率的です。この場合は、すべての更新が行われた後で、単純にデータ テーブル全体を一度に設定し直すのが最も効率的です。

    2ft8f67x.alert_note(ja-jp,VS.90).gifメモ :

    データ テーブルの再表示は、SQL ステートメントのバッチ処理がサポートされたデータベースのみで使用できます。たとえば、Microsoft Access では、データ テーブルの再表示は、他の操作を実行するコマンドと同じコマンドで実行できません。

参照

概念

データの新機能

データの表示の概要

その他の技術情報

データに関するチュートリアル

Visual Studio でのデータへの接続

アプリケーションでデータを受け取る準備

アプリケーションへのデータのフェッチ

Windows アプリケーションのフォームでのデータの表示

アプリケーションでのデータ編集

データの検証

データの保存