次の方法で共有


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

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

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

このチュートリアルでは、Northwind サンプル データベースのストアド プロシージャにマップされている 2 つのメソッドである CustOrdersDetail と CustOrderHist を使用します。 マッピングは、SqlMetal コマンド ライン ツールを実行して Visual Basic ファイルを生成するときに発生します。 詳細については、このチュートリアルで後述する「前提条件」セクションを参照してください。

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

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

このチュートリアルは、Visual Basic 開発設定を使用して作成されました。

[前提条件]

このチュートリアルでは、次のものが必要です。

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

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

    開発用コンピューターにこのデータベースがない場合は、Microsoft ダウンロード サイトからダウンロードできます。 手順については、「 サンプル データベースのダウンロード」を参照してください。 データベースをダウンロードしたら、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 アセンブリ参照を追加する

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

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. [表示] メニューの [ツールボックス] をクリックします。

    ツールボックスが開きます。

    このセクションの残りの手順を実行しながらツールボックスを開いたままにするには、[ 自動非表示] プッシュピンをクリックします。

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

    付属の図のようにコントロールを配置します。 コントロールが簡単に収まるように Form1 を展開します。

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

  5. Text プロパティを Label1 から OrderID の入力に変更します。

  6. Label2 の場合と同じように、Text プロパティを Label2 から Enter CustomerID: に変更します。

  7. 同様に、Button1Text プロパティを Order Details に変更します。

  8. Button2Text プロパティを注文履歴に変更します。

    すべてのテキストが表示されるようにボタン コントロールを拡大します。

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

  1. Form1[注文の詳細] をダブルクリックして、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. [ 受注コードの入力 ] ボックスに「 10249 」と入力し、[ 注文の詳細] をクリックします。

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

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

  3. [ CustomerID の入力 ] ボックスに「 ALFKI」と入力し、[ 注文履歴] をクリックします。

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

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

  4. [ 注文 ID の入力 ] ボックスに「 123」と入力し、[ 注文の詳細] をクリックします。

    メッセージ ボックスに "結果なし" と表示されます。

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

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

    デバッグ セッションが閉じます。

  6. 実験が完了したら、[ファイル] メニューの [プロジェクトを閉じる] をクリックし、メッセージが表示されたらプロジェクトを保存できます。

次のステップ

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

こちらも参照ください