Share via


.NET Framework アプリケーションで TableAdapter DBDirect メソッドを使用してデータを保存する

Note

データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 これらが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。

このチュートリアルでは、TableAdapter の DBDirect メソッドを使用してデータベースに対して直接 SQL ステートメントを実行する手順について詳しく説明します。 TableAdapter の DBDirect メソッドを使用すると、データベースの更新をきめ細かいレベルで制御できます。 これらのメソッドを使用すると、(InsertUpdateDelete ステートメントをすべて 1 回の呼び出しで実行するオーバーロードされた Update メソッドとは異なり、) 必要に応じてアプリケーションで UPDATEINSERTDELETE メソッドを個別に呼び出すことによって、特定の SQL ステートメントおよびストアド プロシージャを実行できます。

このチュートリアルでは、次の作業を行う方法について説明します。

前提条件

このチュートリアルの手順では、.NET Framework Windows フォーム アプリケーションを使用します。

このチュートリアルでは SQL Server Express LocalDB と Northwind サンプル データベースを使用します。

  1. SQL Server Express LocalDB がない場合は、SQL Server Express のダウンロード ページからインストールするか、Visual Studio インストーラーを使用してインストールします。 Visual Studio インストーラーでは、データ ストレージとデータ処理ワークロードの一部として、または個別のコンポーネントとして、SQL Server Express LocalDB をインストールできます。

  2. 次の手順に従って、Northwind サンプル データベースをインストールします。

    1. Visual Studio で、 [SQL Server オブジェクト エクスプローラー] ウィンドウを開きます。 (SQL Server オブジェクト エクスプローラーは、Visual Studio インストーラーのデータ ストレージとデータ処理ワークロードの一部としてインストールされます)。 [SQL Server] ノードを展開します。 LocalDB インスタンスを右クリックし、 [新しいクエリ] を選択します。

      クエリ エディター ウィンドウが開きます。

    2. Northwind Transact-SQL スクリプトをクリップボードにコピーします。 この T-SQL スクリプトを使用すると、Northwind データベースが新規作成され、データが設定されます。

    3. T-SQL スクリプトをクエリ エディターに貼り付け、 [実行] ボタンを選択します。

      しばらくすると、クエリの実行が完了し、Northwind データベースが作成されます。

Windows フォーム アプリケーションを作成する

最初の手順は、Windows フォーム アプリ (.NET Framework) を作成することです。 Windows フォーム アプリのプロジェクトの種類を使用し、C# または Visual Basic を使用して、プロジェクトを作成します。

Note

このチュートリアルのコードは、C# と Visual Basic で使用できます。 このページのコード言語を C# と Visual Basic の間で切り替えるには、ページ右側の上部にあるコード言語スイッチャーを使用します。

データベースからのデータ ソースの作成

この手順では、データ ソース構成ウィザードを使用して、Northwind サンプル データベースの Region テーブルに基づいてデータ ソースを作成します。 接続を作成するには、Northwind サンプル データベースへのアクセス権を持っている必要があります。 Northwind サンプル データベースの設定の詳細については、「方法 : サンプル データベースをインストールする」を参照してください。

データ ソースを作成するには

  1. [データ] メニューで、 [データ ソースの表示] を選択します。

    [データ ソース] ウィンドウが開きます。

  2. [データ ソース] ウィンドウで、 [新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。

  3. [データソースの種類を選択] 画面で、 [データベース][次へ] の順に選択します。

  4. [データ接続の選択] 画面で、次のいずれかの操作を行います。

    • Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は選択します。

      または

    • [新しい接続] を選択して [接続の追加] または [接続の変更] ダイアログ ボックスを表示します。

  5. データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、 [次へ] を選択します。

  6. [アプリケーション構成ファイルに接続文字列を保存] 画面で、 [次へ] を選択します。

  7. [データベース オブジェクトの選択] 画面で、 [テーブル] ノードを展開します。

  8. Region テーブルを選択し、 [完了] をクリックします。

    プロジェクトに NorthwindDataSet が追加され、[データ ソース] ウィンドウに Region テーブルが表示されます。

データを表示するためのコントロールをフォームに追加する

[データ ソース] ウィンドウからフォームに項目をドラッグして、データ バインド コントロールを作成します。

Windows フォーム上にデータ バインド コントロールを作成するには、メインの Region ノードを、 [データ ソース] ウィンドウからフォーム上にドラッグします。

レコード間をナビゲートするための DataGridView コントロールとツール ストリップ (BindingNavigator) がフォームに表示されます。 コンポーネント トレイには、NorthwindDataSetRegionTableAdapterBindingSourceBindingNavigator が表示されます。

個々の TableAdapter DbDirect メソッドを呼び出すボタンを追加するには

  1. ツールボックスから 3 つの Button コントロールを RegionDataGridView の下の Form1 にドラッグします。

  2. 各ボタンの [名前] および [テキスト] プロパティを設定します。

    名前 テキスト
    InsertButton [挿入]
    UpdateButton アップデート
    DeleteButton 削除

データベースに新しいレコードを挿入するコードを追加するには

  1. [InsertButton] を選択して、クリック イベントのイベント ハンドラーを作成し、コード エディターでフォームを開きます。

  2. InsertButton_Click イベント ハンドラーを次のコードで置き換えます。

    private void InsertButton_Click(object sender, EventArgs e)
    {
        Int32 newRegionID = 5;
        String newRegionDescription = "NorthEastern";
    
        try
        {
            regionTableAdapter1.Insert(newRegionID, newRegionDescription);
        }
        catch (Exception ex)
        {
            MessageBox.Show("Insert Failed");
        }
        RefreshDataset();
    }
    
    
    private void RefreshDataset()
    {
        this.regionTableAdapter1.Fill(this.northwindDataSet1.Region);
    }
    

    注意

    使用した Visual Studio バージョンとプロジェクト テンプレートに応じて、このコードで使用される regionTableAdapterregionTableAdapter1 のような変数名は、生成されたコードで末尾に 1 が付く場合と付かない場合があります。 コードを適宜修正して、すべての場所で正しい名前が使用されるようにしてください。 名前が正しくない箇所では、Visual Studio により赤い波線が表示されます。

データベースのレコードを更新するコードを追加するには

  1. [UpdateButton] をダブルクリックして、クリック イベントのイベント ハンドラーを作成し、コード エディターでフォームを開きます。

  2. UpdateButton_Click イベント ハンドラーを次のコードで置き換えます。

    private void UpdateButton_Click(object sender, EventArgs e)
    {
        Int32 newRegionID = 5;
        
        try
        {
            regionTableAdapter1.Update(newRegionID, "Updated Region Description", 5, "NorthEastern");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Update Failed");
        }
        RefreshDataset();
    }
    

データベースからレコードを削除するためのコードを追加するには

  1. [DeleteButton] を選択して、クリック イベントのイベント ハンドラーを作成し、コード エディターでフォームを開きます。

  2. DeleteButton_Click イベント ハンドラーを次のコードで置き換えます。

    private void DeleteButton_Click(object sender, EventArgs e)
    {
        try
        {
            regionTableAdapter1.Delete(5, "Updated Region Description");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Delete Failed");
        }
        RefreshDataset();
    }
    

アプリケーションの実行

  • F5 キーを選択してアプリケーションを実行します。

  • [挿入] ボタンをクリックし、グリッドに新しいレコードが表示されることを確認します。

  • [更新] ボタンをクリックし、グリッドでレコードが更新されることを確認します。

  • [削除] ボタンをクリックし、グリッドからレコードが削除されることを確認します。

次のステップ

アプリケーションの要件に応じて、データ バインド フォームの作成後に、追加の操作を実行できます。 このチュートリアルで行うことができる拡張には次のものがあります。

  • フォームに検索機能を追加します。

  • [データ ソース] ウィンドウの [ウィザードで DataSet を構成] を選択して、データセットにテーブルを追加します。 関連するコードをフォームにドラッグすることによって、関連するデータを表示するコントロールを追加できます。 詳細については、データセットのリレーションシップに関する記事をご覧ください。