次の方法で共有


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

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

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

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

[前提条件]

このチュートリアルの手順は、.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) を作成します。 C# または Visual Basic を使用して、 Windows フォーム アプリ プロジェクトの種類を使用してプロジェクトを作成します。

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

データベースからデータ ソースを作成する

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

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

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

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

  2. [ データ ソース ] ウィンドウで、[ 新しいデータ ソースの追加 ] を選択して 、データ ソース構成ウィザードを開始します。

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

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

    • Northwind サンプル データベースへのデータ接続がドロップダウン リストで使用できる場合は、それを選択します。

      -又は-

    • [ 新しい接続] を選択して、[ 接続の追加/変更 ] ダイアログ ボックスを起動します。

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

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

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

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

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

フォームにコントロールを追加してデータを表示する

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

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

DataGridView コントロールと、レコード内を移動するためのツール ストリップ (BindingNavigator) がフォームに表示されます。 NorthwindDataSetRegionTableAdapterBindingSource、およびBindingNavigatorがコンポーネント トレイに表示されます。

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

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

  2. 各ボタンに次の Name プロパティと Text プロパティを設定します。

    名前 テキスト
    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 キーを押してアプリケーションを実行します。

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

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

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

次のステップ

アプリケーションの要件に応じて、データ バインド フォームを作成した後に実行する必要がある手順がいくつかあります。 このチュートリアルでは、次のような機能強化を行うことができます。

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

  • [データ ソース] ウィンドウから [ウィザードを使用してデータセットの構成] を選択して、データセットにテーブルを追加します。 関連するノードをフォームにドラッグすることで、関連データを表示するコントロールを追加できます。 詳細については、「 データセットのリレーションシップ」を参照してください。