共用方式為


操作指南:僅使用預存程序(Visual Basic)

本逐步解說提供基本的端對端 LINQ to SQL 案例,以便只使用預存程式來存取數據。 資料庫管理員通常會使用這種方法來限制存取數據存放區的方式。

備註

您也可以在 LINQ to SQL 應用程式中使用預存程式來覆寫預設行為,特別是針對 CreateUpdateDelete 進程。 如需詳細資訊,請參閱 自訂插入、更新和刪除作業

針對本逐步解說的目的,您將使用已對應至 Northwind 範例資料庫中預存程式的兩種方法: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(程式代碼產生工具)。

概觀

本操作指南包含六個主要工作:

  • 在 Visual Studio 中設定 LINQ to SQL 解決方案。

  • 將 System.Data.Linq 元件新增至專案。

  • 將資料庫程式代碼檔案新增至專案。

  • 建立資料庫連線。

  • 設定使用者介面。

  • 執行及測試應用程式。

建立 LINQ to SQL 解決方案

在第一個工作中,您會建立 Visual Studio 方案,其中包含建置和執行 LINQ to SQL 專案的必要參考。

建立 LINQ to SQL 解決方案

  1. 在 [Visual Studio 檔案] 功能表上,按兩下 [ 新增專案]。

  2. 在 [新增專案] 對話框的 [專案類型] 窗格中,展開 [Visual Basic],然後按兩下 [Windows]。

  3. 在 [ 範本] 窗格中,按兩下 [Windows Forms 應用程式]。

  4. 在 [ 名稱] 方塊中,輸入 SprocOnlyApp

  5. 按一下 [確定]

    Windows Forms 設計工具隨即開啟。

新增 LINQ to SQL 元件參考

標準 Windows Forms 應用程式範本中不包含 LINQ to SQL 元件。 您必須自行新增元件,如下列步驟所述:

若要新增 System.Data.Linq.dll

  1. [方案總管]中,按一下[顯示所有檔案]

  2. 在 [方案總管] 中,以滑鼠右鍵按一下 [參考],然後按一下 [新增參考]

  3. 在 [ 新增參考] 對話框中,按兩下 [.NET],按兩下 [System.Data.Linq] 元件,然後按兩下 [ 確定]。

    元件會新增至專案。

將 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 Forms 設計工具 (Form1.vb[設計]]。

  2. 在 [檢視] 功能表上,按一下 [工具箱]

    工具箱隨即開啟。

    備註

    按一下 自動隱藏 圖釘,以在本節中執行其餘步驟時保持工具箱開啟。

  3. 將兩個按鈕、兩個文本框和兩個標籤從工具箱拖曳到 Form1

    將控制元件排列為隨附圖例中的 。 展開 Form1 ,讓控件易於調整。

  4. 以滑鼠右鍵按下 Label1,然後按兩下 [ 屬性]。

  5. Text 屬性從 Label1 變更為 Enter OrderID:

  6. 使用 Label2 的相同方式,將 Text 屬性從 Label2 變更為 Enter CustomerID:

  7. 同樣地,將 Button1Text 屬性變更為 [訂單詳細數據]。

  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 = ""
    

測試應用程式

現在是時候測試您的應用程式了。 請注意,您對資料庫的操作僅限於兩個預存程序可以執行的動作。 這些動作是傳回您輸入之任何 orderID 所包含的產品,或傳回針對您輸入的任何 CustomerID 所訂購之產品的歷程記錄。

若要測試應用程式

  1. 按 F5 開始偵錯。

    Form1 隨即出現。

  2. 在 [ 輸入 OrderID] 方塊中,輸入 10249 ,然後按兩下 [訂單詳細數據]。

    消息框會列出 10249 訂單中包含的產品。

    按兩下 [確定 ] 關閉消息框。

  3. 在 [ 輸入 CustomerID] 方塊中,輸入 ALFKI,然後按兩下 [訂單記錄]。

    消息框會列出客戶 ALFKI 的訂單歷程記錄。

    按兩下 [確定 ] 關閉消息框。

  4. 在 [ 輸入 OrderID] 方塊中,輸入 123,然後按兩下 [訂單詳細數據]。

    消息框會顯示「沒有結果」。

    按兩下 [確定 ] 關閉消息框。

  5. 在 [ 偵錯] 功能表上,單擊 [ 停止偵錯]。

    偵錯會話已結束。

  6. 如果您已完成實驗,您可以在 [檔案] 功能表上按兩下 [關閉專案],並在出現提示時儲存專案。

後續步驟

您可以藉由進行一些變更來增強此專案。 例如,您可以在清單框中列出可用的預存程式,並讓使用者選取要執行的程式。 您也可以將報表的輸出串流至文字檔。

另請參閱