方法 : LINQ を使用してデータベースのデータを変更する (Visual Basic)
統合言語クエリ (LINQ: Language-Integrated Query) のクエリを使用すると、簡単にデータベースの情報にアクセスし、データベースの値を変更できます。
SQL Server データベースの情報を取得して更新する新しいアプリケーションの作成方法の例を以下に示します。
このトピックの例では、Northwind サンプル データベースを使用します。開発用コンピューターに Northwind サンプル データベースがインストールされていない場合は、Microsoft ダウンロード センター の Web サイトからダウンロードできます。手順については、「Downloading Sample Databases (LINQ to SQL)」を参照してください。
データベースへの接続を作成するには
Visual Studio で、[表示] メニューの [サーバー エクスプローラー] または [データベース エクスプローラー] をクリックして、サーバー エクスプローラーまたはデータベース エクスプローラーを開きます。
サーバー エクスプローラーまたはデータベース エクスプローラーで、[データ接続] を右クリックし、[接続の追加] をクリックします。
Northwind サンプル データベースへの有効な接続を指定します。
LINQ to SQL ファイルを含むプロジェクトを追加するには
Visual Studio で、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。プロジェクトの種類として、Visual Basic の [Windows フォーム アプリケーション] をクリックします。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。[LINQ to SQL クラス] 項目テンプレートをクリックします。
ファイルに northwind.dbml という名前を付けます。[追加] をクリックします。オブジェクト リレーショナル デザイナー (O/R デザイナー) で northwind.dbml ファイルが開かれます。
照会および変更するテーブルをデザイナーに追加するには
サーバー エクスプローラーまたはデータベース エクスプローラーで、Northwind データベースへの接続を展開します。[Tables] フォルダーを展開します。
O/R デザイナーを閉じている場合は、前に追加した northwind.dbml ファイルをダブルクリックして再度開くことができます。
Customers テーブルをクリックし、デザイナーの左ペインにドラッグします。
デザイナーによって、プロジェクト用の新しい Customer オブジェクトが作成されます。
変更を保存し、デザイナーを閉じます。
プロジェクトを保存します。
データベースを変更するコードを追加し、結果を表示するには
ツールボックスから、DataGridView コントロールを、プロジェクトの既定の Windows フォームである Form1 にドラッグします。
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 つの Button コントロールをフォームにドラッグします。最初の Button コントロールを選択します。[プロパティ] ウィンドウで、Button コントロールの Name を AddButton に設定し、Text を Add に設定します。2 番目のボタンを選択し、Name プロパティを UpdateButton に、Text プロパティを Update にそれぞれ設定します。3 番目のボタンを選択し、Name プロパティを DeleteButton に、Text プロパティを Delete にそれぞれ設定します。
[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
[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
[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
F5 キーを押してプロジェクトを実行します。新しいレコードを追加するには、[Add] をクリックします。その新しいレコードを変更するには、[Update] をクリックします。その新しいレコードを削除するには、[Delete] をクリックします。
参照
処理手順
How to: Assign Stored Procedures to Perform Updates, Inserts, and Deletes (O/R Designer)
Walkthrough: Creating LINQ to SQL Classes (O/R Designer)
概念
DataContext Methods (O/R Designer)