方法: LINQ を使用してデータベース内のデータを変更する (Visual Basic)
Language-Integrated クエリ (LINQ) クエリを使用すると、データベース情報に簡単にアクセスし、データベース内の値を変更できます。
次の例は、SQL Server データベースの情報を取得および更新する新しいアプリケーションを作成する方法を示しています。
この記事の例では、Northwind サンプル データベースを使用します。 データベースを取得するには、「サンプル データベースのダウンロード 参照してください。
データベースへの接続を作成するには
Visual Studio で、[表示] メニューをクリックして Server Explorer/Database Explorer を開き、サーバー エクスプローラー/データベース エクスプローラーを選択します。
[サーバー エクスプローラー]/[データベース エクスプローラー] で [データ接続] を右クリックし、[接続の追加] をクリックします。
Northwind サンプル データベースへの有効な接続を指定します。
LINQ to SQL ファイルを使用してプロジェクトを追加するには
Visual Studio の [ファイル ] メニューで、[新規 ] をポイントして、[プロジェクト ] をクリックします。 プロジェクトの種類として Visual Basic Windows フォーム アプリケーション を選択します。
[プロジェクト] メニューの [新しい項目の追加] クリックします。 LINQ to SQL クラス 項目テンプレートを選択します。
ファイルに
northwind.dbml
名前を付けます。 追加をクリックします。northwind.dbml
ファイルのオブジェクト リレーショナル デザイナー (O/R デザイナー) が開きます。
テーブルをクエリに追加し、デザイナーで変更するには
Server Explorer/Database Explorerで、Northwind データベースへの接続を展開します。 テーブル フォルダーを展開します。
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 をダブルクリックして、Load イベントにコードを追加し、DataContextのプロパティとして公開されている Customers テーブルに対してクエリを実行します。 次のコードを追加します。
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
に設定します。[追加] ボタンをダブルクリックして、コードをその
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
更新 ボタンをダブルクリックして、その
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" updateCust.Country = "Wales" updateCust.CompanyName = "Red Yonder Airlines" updateCust.City = "Cardiff" Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
[削除] ボタンをダブルクリックして、コードをその
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 キーを押してプロジェクトを実行します。 [追加] をクリックして、新しいレコードを追加します。 更新 をクリックして、新しいレコードを変更します。 [削除] をクリックして、新しいレコードを削除します。
関連項目
.NET