次の方法で共有


チュートリアル : ストアド プロシージャのみを使用する (Visual Basic) (LINQ to SQL)

更新 : November 2007

このチュートリアルでは、ストアド プロシージャのみを使用してデータにアクセスする、基本の LINQ to SQL シナリオ全体を示します。この方法は、データベース管理者がデータストアのアクセス方法を制限する目的でよく使用されます。

Bb386955.alert_note(ja-jp,VS.90).gifメモ :

LINQ to SQL アプリケーションでストアド プロシージャを使用することにより、特に CreateUpdate、および Delete プロセスの既定の動作をオーバーライドすることもできます。詳細については、「挿入、更新、および削除の各操作のカスタマイズ (LINQ to SQL)」を参照してください。

このチュートリアルの目的上、Northwind サンプル データベース内のストアド プロシージャに対応付けられている 2 つのメソッド (CustOrdersDetail および CustOrderHist) を使用します。SqlMetal コマンド ライン ツールを実行して Visual Basic ファイルを生成すると、対応付けが発生します。詳細については、このチュートリアルの「前提条件」を参照してください。

このチュートリアルは、オブジェクト リレーショナル デザイナに依存しません。Visual Studio を使用している開発者は、O/R デザイナを使用してストアド プロシージャの機能を実装することもできます。詳細についてはオブジェクト リレーショナル デザイナ (O/R デザイナ) およびオブジェクト リレーショナル デザイナー (O/R デザイナー) およびオブジェクト リレーショナル デザイナー (O/R デザイナー)を参照してください。

Bb386955.alert_note(ja-jp,VS.90).gifメモ :

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

このチュートリアルは、Visual Basic 開発設定を使用して記述されています。

前提条件

このチュートリアルの前提条件は次のとおりです。

  • このチュートリアルでは、専用フォルダ ("c:\linqtest3") を使用してファイルを保持します。チュートリアルを開始する前にこのフォルダを作成してください。

  • Northwind サンプル データベース。

    開発コンピュータにこのデータベースがない場合は、Microsoft ダウンロード サイトからダウンロードします。手順については、「サンプル データベースのダウンロード (LINQ to SQL)」を参照してください。データベースをダウンロードしたら、northwnd.mdf ファイルを c:\linqtest3 フォルダにコピーします。

  • Northwind データベースから生成された Visual Basic コード ファイル。

    このチュートリアルは、SqlMetal ツールを使用して次のコマンド ラインで作成されています。

    sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize

    詳細については、「コード生成ツール (SqlMetal.exe)」を参照してください。

概要

このチュートリアルは、主に次の 6 つの手順で構成されています。

  • Visual Studio で LINQ to SQL ソリューションを設定します。

  • プロジェクトに System.Data.Linq アセンブリを追加します。

  • プロジェクトにデータベース コード ファイルを追加します。

  • データベースへの接続を作成します。

  • ユーザー インターフェイスを設定します。

  • アプリケーションを実行およびテストします。

LINQ to SQL ソリューションを作成する

最初に、LINQ to SQL プロジェクトをビルドおよび実行するのに必要な参照を含む Visual Studio ソリューションを作成します。

LINQ to SQL ソリューションを作成するには

  1. Visual Studio の [ファイル] メニューの [新しいプロジェクト] をクリックします。

  2. [新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] ペインで、[Visual Basic] を展開し、[Windows] をクリックします。

  3. [テンプレート] ペインの [Windows フォーム アプリケーション] をクリックします。

  4. [名前] ボックスに「SprocOnlyApp」と入力します。

  5. [OK] をクリックします。

    Windows フォーム デザイナが開きます。

LINQ to SQL アセンブリ参照を追加する

標準の Windows フォーム アプリケーション テンプレートには、LINQ to SQL アセンブリは含まれていません。次の手順に従って、アセンブリを自分で追加する必要があります。

System.Data.Linq.dll を追加するには

  1. ソリューション エクスプローラで、[すべてのファイルを表示] をクリックします。

  2. ソリューション エクスプローラで、[参照設定] を右クリックし、[参照の追加] をクリックします。

  3. [参照の追加] ダイアログ ボックスで、[.NET] をクリックし、System.Data.Linq アセンブリをクリックします。次に、[OK] をクリックします。

    アセンブリがプロジェクトに追加されます。

プロジェクトに Northwind コード ファイルを追加する

この手順では、SqlMetal ツールを使用して Northwind サンプル データベースからコード ファイルを生成していることが前提です。詳細については、このチュートリアルの「前提条件」を参照してください。

プロジェクトに Northwind コード ファイルを追加するには

  1. [プロジェクト] メニューの [既存項目の追加] をクリックします。

  2. [既存項目の追加] ダイアログ ボックスで c:\linqtest3\northwind.vb ファイルに移動し、[追加] をクリックします。

    プロジェクトに northwind.vb ファイルが追加されます。

データベース接続を作成する

この手順では、Northwind サンプル データベースへの接続を定義します。このチュートリアルでは、パスとして "c:\linqtest3\northwnd.mdf" を使用します。

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

  1. ソリューション エクスプローラで [Form1.vb] を右クリックし、[コードの表示] をクリックします。

    コード エディタに Class Form1 が表示されます。

  2. Form1 コード ブロックに次のコードを入力します。

    Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
    

ユーザー インターフェイスを設定する

この手順では、ユーザーがストアド プロシージャを実行してデータベース内のデータにアクセスできるように、インターフェイスを作成します。このチュートリアルで作成するアプリケーションでは、ユーザーはアプリケーションに埋め込まれているストアド プロシージャを使用してのみ、データベース内のデータにアクセスできます。

ユーザー インターフェイスを設定するには

  1. Windows フォーム デザイナに戻ります ([Form1.vb [デザイン]])。

  2. [表示] メニューの [ツールボックス] をクリックします。

    ツールボックスが表示されます。

    Bb386955.alert_note(ja-jp,VS.90).gifメモ :

    [自動的に隠す] プッシュピンをクリックして、このセクションの残りの手順を実行する間、ツールボックスを開いたままにします。

  3. ツールボックスから 2 つのボタン、2 つのテキスト ボックス、および 2 つのラベルを [Form1] にドラッグします。

    図に示されているように、コントロールを配置します。[Form1] を拡張すると、コントロールを簡単に配置できます。

  4. [Label1] を右クリックし、[プロパティ] をクリックします。

  5. Text プロパティを [Label1] から [Enter OrderID:] に変更します。

  6. Label2 についても同様に、Text プロパティを [Label2] から [Enter CustomerID:] に変更します。

  7. 同様に、Button1 の Text プロパティを [Order Details] に変更します。

  8. Button2 の Text プロパティを [Order History] に変更します。

    すべてのテキストが表示されるように、ボタン コントロールの幅を広げます。

ダイアログ ボックス

ボタン クリックを処理するには

  1. [Form1] の [Order Details] をダブルクリックして Button1 イベント ハンドラを作成し、コード エディタを開きます。

  2. Button1 ハンドラ内に次のコードを入力します。

    ' Declare a variable to hold the contents of
    ' TextBox1 as an argument for the stored
    ' procedure.
    Dim parm As String = TextBox1.Text
    
    ' Declare a variable to hold the results returned
    ' by the stored procedure.
    Dim custQuery = db.CustOrdersDetail(parm)
    
    ' Clear the message box of previous results.
    Dim msg As String = ""
    Dim response As MsgBoxResult
    
    ' Execute the stored procedure and store the results.
    For Each custOrdersDetail As CustOrdersDetailResult In custQuery
        msg &= custOrdersDetail.ProductName & vbCrLf
    Next
    
    ' Display the results.
    If msg = "" Then
        msg = "No results."
    End If
    response = MsgBox(msg)
    
    ' Clear the variables before continuing.
    parm = ""
    TextBox1.Text = ""
    
  3. [Form1] の [Button2] をダブルクリックして Button2 イベント ハンドラを作成し、コード エディタを開きます。

  4. Button2 ハンドラ内に次のコードを入力します。

    ' Comments in the code for Button2 are the same
    ' as for Button1.
    Dim parm As String = TextBox2.Text
    
    Dim custQuery2 = db.CustOrderHist(parm)
    Dim msg As String = ""
    Dim response As MsgBoxResult
    
    For Each custOrdHist As CustOrderHistResult In custQuery2
        msg &= custOrdHist.ProductName & vbCrLf
    Next
    
    If msg = "" Then
        msg = "No results."
    End If
    
    response = MsgBox(msg)
    parm = ""
    TextBox2.Text = ""
    

アプリケーションのテスト

次に、アプリケーションをテストします。データストアに対する操作は、2 つのストアド プロシージャが実行できる動作に限定されます。入力する orderID に含まれる製品を返す動作か、または、入力する CustomerID で注文された製品の履歴を返す動作です。

アプリケーションをテストするには

  1. F5 キーを押してデバッグを開始します。

    Form1 が表示されます。

  2. [Enter OrderID] ボックスに「10249」と入力し、[Order Details] をクリックします。

    メッセージ ボックスに、注文 10249 に含まれる製品が表示されます。

    [OK] をクリックしてメッセージ ボックスを閉じます。

  3. [Enter CustomerID] ボックスに「ALFKI」と入力し、[Order History] をクリックします。

    メッセージ ボックスに、顧客 ALFKI の注文履歴が表示されます。

    [OK] をクリックしてメッセージ ボックスを閉じます。

  4. [Enter OrderID] ボックスに「123」と入力し、[Order Details] をクリックします。

    メッセージ ボックスに "No results" が表示されます。

    [OK] をクリックしてメッセージ ボックスを閉じます。

  5. [デバッグ] メニューの [デバッグの停止] をクリックします。

    デバッグ セッションが終了します。

  6. 操作が終了したら、[ファイル] メニューの [プロジェクトを閉じる] をクリックし、メッセージに従ってプロジェクトを保存します。

次の手順

いくつかの変更を加えることによって、このプロジェクトを強化できます。たとえば、使用できるストアド プロシージャをリスト ボックスに一覧表示し、実行するプロシージャをユーザーに選択させることができます。レポートの出力をテキスト ファイルに送ることもできます。

参照

概念

チュートリアルによる学習 (LINQ to SQL)

その他の技術情報

ストアド プロシージャ (LINQ to SQL)