方法 : LINQ を使用してデータベースのデータを変更する (Visual Basic)

更新 : 2008 年 7 月

統合言語クエリ (LINQ: Language-Integrated Query) のクエリを使用すると、簡単にデータベースの情報にアクセスし、データベースの値を変更できます。

SQL Server データベースの情報を取得して更新する新しいアプリケーションの作成方法の例を以下に示します。

このトピックの例では、Northwind サンプル データベースを使用します。開発用コンピュータに Northwind サンプル データベースがインストールされていない場合は、Microsoft ダウンロード センター の Web サイトからダウンロードできます。手順については、「サンプル データベースのダウンロード (LINQ to SQL)」を参照してください。

データベースへの接続を作成するには

  1. Visual Studio で、[表示] メニューの [サーバー エクスプローラ] または [データベース エクスプローラ] をクリックして、サーバー エクスプローラまたはデータベース エクスプローラを開きます。

  2. サーバー エクスプローラまたはデータベース エクスプローラで、[データ接続] を右クリックし、[接続の追加] をクリックします。

  3. Northwind サンプル データベースへの有効な接続を指定します。

LINQ to SQL ファイルを含むプロジェクトを追加するには

  1. Visual Studio で、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。プロジェクトの種類として、Visual Basic の [Windows フォーム アプリケーション] をクリックします。

  2. [プロジェクト] メニューの [新しい項目の追加] をクリックします。[LINQ to SQL クラス] 項目テンプレートをクリックします。

  3. ファイルに northwind.dbml という名前を付けます。[追加] をクリックします。オブジェクト リレーショナル デザイナ (O/R デザイナ) で northwind.dbml ファイルが開かれます。

照会および変更するテーブルをデザイナに追加するには

  1. サーバー エクスプローラまたはデータベース エクスプローラで、Northwind データベースへの接続を展開します。[Tables] フォルダを展開します。

    O/R デザイナを閉じている場合は、前に追加した northwind.dbml ファイルをダブルクリックして再度開くことができます。

  2. Customers テーブルをクリックし、デザイナの左ペインにドラッグします。

    デザイナによって、プロジェクト用の新しい Customer オブジェクトが作成されます。

  3. 変更を保存し、デザイナを閉じます。

  4. プロジェクトを保存します。

データベースを変更するコードを追加し、結果を表示するには

  1. ツールボックスから、DataGridView コントロールを、プロジェクトの既定の Windows フォームである Form1 にドラッグします。

  2. O/R デザイナにテーブルを追加すると、デザイナによって DataContext オブジェクトがプロジェクトに追加されます。このオブジェクトには、Customers テーブルへのアクセスに使用できるコードが含まれます。また、テーブルのローカル Customer オブジェクトと Customers コレクションを定義するコードも含まれます。プロジェクトの DataContext オブジェクトには、.dbml ファイルの名前に基づいて名前が付けられます。このプロジェクトの場合、DataContext オブジェクトの名前は northwindDataContext になります。

    コード内に DataContext オブジェクトのインスタンスを作成し、O/R デザイナで指定した Customers コレクションを照会および変更できます。Customers コレクションに対する変更は、DataContext オブジェクトの SubmitChanges メソッドを呼び出して送信するまで、データベースには反映されません。

    Windows フォーム Form1 をダブルクリックし、DataContext のプロパティとして公開されている Customers テーブルを照会するためのコードを、Load イベントに追加します。次のコードを追加します。

    Private db As northwindDataContext
    
    Private Sub Form1_Load(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) _
                           Handles MyBase.Load
      db = New northwindDataContext()
    
      RefreshData()
    End Sub
    
    Private Sub RefreshData()
      Dim customers = From cust In db.Customers _
                      Where cust.City(0) = "W" _
                      Select cust
    
      DataGridView1.DataSource = customers
    End Sub
    
  3. ツールボックスから 3 つの Button コントロールをフォームにドラッグします。最初の Button コントロールを選択します。[プロパティ] ウィンドウで、Button コントロールの Name を AddButton に設定し、Text を Add に設定します。2 番目のボタンを選択し、Name プロパティを UpdateButton に、Text プロパティを Update にそれぞれ設定します。3 番目のボタンを選択し、Name プロパティを DeleteButton に、Text プロパティを Delete にそれぞれ設定します。

  4. [Add] ボタンをダブルクリックし、Click イベントにコードを追加します。次のコードを追加します。

    Private Sub AddButton_Click(ByVal sender As System.Object, _
                                ByVal e As System.EventArgs) _
                                Handles AddButton.Click
      Dim cust As New Customer With { _
        .City = "Wellington", _
        .CompanyName = "Blue Yonder Airlines", _
        .ContactName = "Jill Frank", _
        .Country = "New Zealand", _
        .CustomerID = "JILLF"}
    
      db.Customers.InsertOnSubmit(cust)
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  5. [Update] ボタンをダブルクリックし、Click イベントにコードを追加します。次のコードを追加します。

    Private Sub UpdateButton_Click(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs) _
                                   Handles UpdateButton.Click
      Dim updateCust = (From cust In db.Customers _
                        Where cust.CustomerID = "JILLF").ToList()(0)
    
      updateCust.ContactName = "Jill Shrader"
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  6. [Delete] ボタンをダブルクリックし、Click イベントにコードを追加します。次のコードを追加します。

    Private Sub DeleteButton_Click(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs) _
                                   Handles DeleteButton.Click
      Dim deleteCust = (From cust In db.Customers _
                        Where cust.CustomerID = "JILLF").ToList()(0)
    
      db.Customers.DeleteOnSubmit(deleteCust)
    
      Try
        db.SubmitChanges()
      Catch
        ' Handle exception.
      End Try
    
      RefreshData()
    End Sub
    
  7. F5 キーを押してプロジェクトを実行します。新しいレコードを追加するには、[Add] をクリックします。その新しいレコードを変更するには、[Update] をクリックします。その新しいレコードを削除するには、[Delete] をクリックします。

参照

処理手順

方法 : 更新、挿入、および削除を実行するストアド プロシージャを割り当てる (O/R デザイナ)

チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナ)

概念

DataContext メソッド (O/R デザイナ)

その他の技術情報

LINQ (Visual Basic)

クエリ (Visual Basic)

LINQ to SQL

履歴の変更

日付

履歴

理由

2008 年 7 月

手順 4. と 6. のコード例のエラーを修正

カスタマ フィードバック