方法: LINQ を使用してストアド プロシージャを呼び出す (Visual Basic)

統合言語クエリ (LINQ) を使用すると、ストアド プロシージャなどのデータベース オブジェクトを始めとするデータベース情報に簡単にアクセスできます。

次の例では、SQL Server データベースのストアド プロシージャを呼び出すアプリケーションを作成する方法を示します。 このサンプルでは、データベース内の 2 つの異なるストアド プロシージャを呼び出す方法を示します。 各プロシージャは、クエリの結果を返します。 プロシージャのうちの 1 つは入力パラメーターを受け取りますが、もう 1 つのプロシージャはパラメーターを受け取りません。

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

注意

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

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

  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 ファイル用に開きます。

ストアド プロシージャを O/R デザイナーに追加するには

  1. [サーバー エクスプローラー]/[データベース エクスプローラー] で、Northwind データベースへの接続を展開します。 [ストアド プロシージャ] フォルダーを展開します。

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

  2. Sales by Year ストアド プロシージャをクリックし、デザイナーの右ペインにドラッグします。 Ten Most Expensive Products ストアド プロシージャをクリックして、デザイナーの右ペインにドラッグします。

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

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

ストアド プロシージャの結果を表示するコードを追加するには

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

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

  3. ストアド プロシージャを O/R デザイナーに追加したときに、DataContext オブジェクトがプロジェクトに追加されました。 このオブジェクトには、これらのプロシージャにアクセスするために必要なコードが含まれています。 プロジェクトの DataContext オブジェクトの名前は、.dbml ファイルの名前に基づいて付けられます。 このプロジェクトでは、DataContext オブジェクトに northwindDataContext という名前が付けられています。

    コード内で DataContext のインスタンスを作成し、O/R デザイナーによって指定されたストアド プロシージャのメソッドを呼び出すことができます。 DataGridView オブジェクトにバインドするために、ストアド プロシージャの結果に対して ToList メソッドを呼び出すことで、クエリの即時実行を強制することが必要な場合があります。

    次のコードを Load イベントに追加して、データ コンテキストのメソッドとして公開されているストアド プロシージャのいずれかを呼び出します。

    Dim db As New northwindDataContext
    
    ' Display the results of the Sales_by_Year stored procedure.
    DataGridView1.DataSource =
        db.Sales_by_Year(#1/1/1996#, #1/1/2007#).ToList()
    
    ' Display the results of the Ten_Most_Expensive_Products
    ' stored procedure.
    
    DataGridView1.DataSource =
        db.Ten_Most_Expensive_Products.ToList()
    
  4. F5 キーを押してプロジェクトを実行し、結果を表示します。

関連項目