次の方法で共有


方法: LINQ を使用してデータベースにクエリを実行する (Visual Basic)

Language-Integrated クエリ (LINQ) を使用すると、データベース情報に簡単にアクセスし、クエリを実行できます。

次の例は、SQL Server データベースに対してクエリを実行する新しいアプリケーションを作成する方法を示しています。

この記事の例では、Northwind サンプル データベースを使用します。 データベースを取得するには、「サンプル データベースのダウンロード 参照してください。

手記

次の手順では、一部の Visual Studio ユーザー インターフェイス要素の名前や場所がコンピューターに異なる場合があります。 これらの要素は、使用している Visual Studio エディションと使用する設定によって決まります。 詳細については、「IDEのカスタマイズ」を参照してください。

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

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

  2. データ接続Server Explorer/Database Explorer で右クリックし、接続の追加をクリックします。

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

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

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

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

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

クエリするテーブルを O/R デザイナーに追加するには

  1. Server Explorer/Database Explorerで、Northwind データベースへの接続を展開します。 テーブル フォルダーを展開します。

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

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

    デザイナーは、プロジェクトの新しい Customer オブジェクトと Order オブジェクトを作成します。 デザイナーがテーブル間のリレーションシップを自動的に検出し、関連オブジェクトの子プロパティを作成します。 たとえば、IntelliSense は、Customer オブジェクトに、その顧客に関連するすべての注文の Orders プロパティがあることを示します。

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

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

データベースにクエリを実行して結果を表示するコードを追加するには

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

  2. Form1 をダブルクリックして、フォームの Load イベントにコードを追加します。

  3. 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
    
  4. F5 キーを押してプロジェクトを実行し、結果を表示します。

  5. 試すことができる追加のクエリを次に示します。

    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
    

関連項目