次の方法で共有


ダイアログ ボックス

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

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

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

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

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

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

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

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

    注意

    このオプションは、[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 ステートメントを生成します。

    注意

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

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

    注意

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

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

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

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

    • タイムスタンプ列

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

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

    注意

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

参照

概念

データ アプリケーション開発の新機能

Visual Studio でのデータへの Windows フォーム コントロールのバインド

Visual Studio でのデータへのコントロールのバインド

その他の技術情報

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

Visual Studio でのデータへの接続

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

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

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

データの検証

データの保存