次の方法で共有


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

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

メモメモ

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 デザイナー).

メモメモ

お使いのマシンで、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. [表示] メニューの [ツールボックス] をクリックします。

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

    メモメモ

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

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

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

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

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

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

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

  8. Button2Text プロパティを [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)