方法: LINQ を使用してデータベースにクエリを実行する (Visual Basic)
Language-Integrated クエリ (LINQ) を使用すると、データベース情報に簡単にアクセスし、クエリを実行できます。
次の例は、SQL Server データベースに対してクエリを実行する新しいアプリケーションを作成する方法を示しています。
この記事の例では、Northwind サンプル データベースを使用します。 データベースを取得するには、「サンプル データベースのダウンロード 参照してください。
手記
次の手順では、一部の Visual Studio ユーザー インターフェイス要素の名前や場所がコンピューターに異なる場合があります。 これらの要素は、使用している Visual Studio エディションと使用する設定によって決まります。 詳細については、「IDEのカスタマイズ」を参照してください。
データベースへの接続を作成するには
Visual Studio で、[表示] メニューの [サーバー エクスプローラー] /[データベース エクスプローラー]クリックして、Server Explorer/Database Explorer を開きます。
データ接続 を Server Explorer/Database Explorer で右クリックし、接続の追加をクリックします。
Northwind サンプル データベースへの有効な接続を指定します。
LINQ to SQL ファイルを含むプロジェクトを追加するには
Visual Studio で、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。 プロジェクトの種類として Visual Basic Windows フォーム アプリケーション を選択します。
[プロジェクト] メニューの [新しい項目の追加] クリックします。 LINQ to SQL クラスの項目テンプレート を選択します。
ファイルに
northwind.dbml
名前を付けます。 追加をクリックします。 northwind.dbml ファイルのオブジェクト リレーショナル デザイナー (O/R デザイナー) が開きます。
クエリするテーブルを O/R デザイナーに追加するには
Server Explorer/Database Explorerで、Northwind データベースへの接続を展開します。 テーブル フォルダーを展開します。
O/R デザイナーを閉じた場合は、先ほど追加した northwind.dbml ファイルをダブルクリックして再度開くことができます。
Customers テーブルをクリックし、デザイナーの左側のウィンドウにドラッグします。 Orders テーブルをクリックし、デザイナーの左側のウィンドウにドラッグします。
デザイナーは、プロジェクトの新しい
Customer
オブジェクトとOrder
オブジェクトを作成します。 デザイナーがテーブル間のリレーションシップを自動的に検出し、関連オブジェクトの子プロパティを作成します。 たとえば、IntelliSense は、Customer
オブジェクトに、その顧客に関連するすべての注文のOrders
プロパティがあることを示します。変更内容を保存し、デザイナーを閉じます。
プロジェクトを保存します。
データベースにクエリを実行して結果を表示するコードを追加するには
ツールボックスから、DataGridView コントロールをプロジェクトの既定の Windows フォーム Form1 にドラッグします。
Form1 をダブルクリックして、フォームの
Load
イベントにコードを追加します。O/R デザイナーにテーブルを追加すると、デザイナーによってプロジェクトの DataContext オブジェクトが追加されました。 このオブジェクトには、各テーブルの個々のオブジェクトとコレクションに加えて、これらのテーブルにアクセスするために必要なコードが含まれています。 プロジェクトの DataContext オブジェクトは、.dbml ファイルの名前に基づいて名前が付けられます。 このプロジェクトでは、DataContext オブジェクトの名前は
northwindDataContext
です。コードで DataContext のインスタンスを作成し、O/R デザイナーで指定されたテーブルに対してクエリを実行できます。
Load
イベントに次のコードを追加して、データ コンテキストのプロパティとして公開されているテーブルに対してクエリを実行します。Dim db As New northwindDataContext Dim londonCusts = From cust In db.Customers Where cust.City = "London" Select cust DataGridView1.DataSource = londonCusts
F5 キーを押してプロジェクトを実行し、結果を表示します。
試すことができる追加のクエリを次に示します。
Dim londonCustOrders = From cust In db.Customers, ord In cust.Orders Where cust.City = "London" Order By ord.OrderID Select cust.City, ord.OrderID, ord.OrderDate DataGridView1.DataSource = londonCustOrders
Dim custs = From cust In db.Customers Where cust.Country = "France" And (cust.CompanyName.StartsWith("F") Or cust.CompanyName.StartsWith("V")) Order By cust.CompanyName Select cust.CompanyName, cust.City DataGridView1.DataSource = custs
関連項目
.NET