Share via


HOW TO:執行傳回資料列的預存程序

更新:2007 年 11 月

若要執行可傳回資料列的預存程序,您可以執行一個設定為要執行預存程序的 TableAdapter 查詢 (例如 CustomersTableAdapter.Fill(CustomersDataTable))。

如果應用程式不會使用 TableAdapter,請在命令物件上呼叫 ExecuteReader 方法,將它的 CommandType 屬性設定為 StoredProcedure (「命令物件」是指應用程式所使用的 .NET Framework 資料提供者適用的特定命令。例如,如果您的應用程式使用 .NET Framework Data Provider for SQL Server,則命令物件會是 SqlCommand)。

下列範例將示範如何使用 TableAdapter 或命令物件,執行從資料庫傳回資料列的預存程序。如需使用 TableAdapter 和命令查詢的詳細資訊,請參閱填入資料庫和查詢資料概觀

注意事項:

根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定

使用 TableAdapter 執行傳回資料列的預存程序

此範例會示範如何使用 TableAdapter 查詢組態精靈建立 TableAdapter 查詢,然後會提供如何宣告 TableAdapter 的執行個體及執行查詢的相關資訊。

若要使用 TableAdapter 建立傳回資料列的預存程序

  1. 在 [DataSet 設計工具] 中開啟資料集。如需詳細資訊,請參閱 HOW TO:在 DataSet 設計工具中開啟資料集

  2. 如果您還沒有 TableAdapter,請建立一個。如需詳細資訊,請參閱 HOW TO:建立 TableAdapter

  3. 如果已經有 TableAdapter 查詢是呼叫傳回資料列的預存程序,請跳至下一個程序<若要宣告 TableAdapter 的執行個體及執行查詢>。否則,請繼續步驟 4,建立新查詢,以便呼叫傳回資料列的預存程序。

  4. 以滑鼠右鍵按一下所需的 TableAdapter,並使用快速鍵功能表加入查詢。

    TableAdapter 查詢組態精靈隨即開啟。

  5. 按 [下一步],然後選取 [使用現有的預存程序],再按 [下一步]。

  6. 從下拉式清單中選取預存程序,再按 [下一步]。

  7. 保留預設值 [表格式資料],再按 [下一步]。

  8. 為每個您要建立的方法,提供名稱 ([填入 DataTable] 和 (或) [傳回 DataTable] 方法)。

  9. 完成精靈;查詢即會加入 TableAdapter。

  10. 建置您的專案。

若要宣告 TableAdapter 的執行個體及執行查詢

  1. 宣告 TableAdapter 的執行個體,其中包含您想執行的查詢。

    • 若要使用設計階段工具來建立執行個體,請從 [工具箱] 拖曳您要的 TableAdapter (您專案中的元件便會出現在符合這個專案名稱標題的 [工具箱] 內)。如果 TableAdapter 未出現在 [工具箱] 中,則您可能需要建置專案。

      -或-

    • 若要在程式碼中建立執行個體,請將下列程式碼取代為 DataSet 和 TableAdapter 的名稱。

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      注意事項:

      TableAdapter 不是實際位於其關聯的資料集類別之內。每一個資料集在其命名空間中,都會有對應的 TableAdapter 集合。例如,如果您有一個名為 SalesDataSet 的資料集,則會有一個包含其 TableAdapter 的 SalesDataSetTableAdapters 命名空間。

  2. 呼叫查詢時,就像是呼叫程式碼中的任何其他方法一樣。您的查詢是 TableAdapter 上的方法。將下列程式碼取代為 TableAdapter 和查詢的名稱。您也需要傳入查詢所需的任何參數。如果您不確定查詢是否需要參數,或需要什麼參數,請檢查此查詢所需簽章的 IntelliSense。根據查詢是否接受參數而定,程式碼會與下列其中一個範例類似:

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

    TableAdapter.Query(DataTable, Parameters)

    宣告 TableAdapter 的執行個體以及執行查詢的完整程式碼應該與下面類似:

    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    tableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")
    
    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    tableAdapter.FillByCity(northwindDataSet.Customers, "Seattle");
    

使用命令物件,執行傳回資料列的預存程序

以下範例將示範如何建立命令,以及執行傳回資料列的預存程序。如需設定及取得命令之參數值的詳細資訊,請參閱 HOW TO:設定及取得命令物件的參數

此範例使用 SqlCommand 物件,並需要下列項目:

  • SystemSystem.DataSystem.Xml 命名空間的參考。

  • 名稱為 SqlConnection1 的資料連接。

  • 資料來源中 SqlConnection1 所要連接之名為 Customers 的資料表 (否則,資料來源中將需要有效的 SQL 陳述式)。

若要使用命令物件,以程式設計方式執行傳回資料列的預存程序

  • 將下列程式碼加入您想執行程式碼的來源方法中。呼叫命令的 ExecuteReader 方法 (例如,ExecuteReader),傳回資料列。隨即在 DataReader 中傳回資料。如需存取 DataReader 資料的詳細資訊,請參閱使用 DataReader 來擷取資料 (ADO.NET)

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim reader As SqlDataReader
    
    cmd.CommandText = "StoredProcedureName"
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    reader = cmd.ExecuteReader()
    ' Data is accessible through the DataReader object here.
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;
    
    cmd.CommandText = "StoredProcedureName";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    reader = cmd.ExecuteReader();
    // Data is accessible through the DataReader object here.
    
    sqlConnection1.Close();
    

安全性

應用程式必須具有存取資料庫及執行預存程序的權限。

請參閱

工作

HOW TO:建立 TableAdapter 查詢

HOW TO:以資料填入資料集

HOW TO:設定及取得命令物件的參數

概念

填入資料庫和查詢資料概觀

參考

SqlCommand.ExecuteReader

OleDbCommand.ExecuteReader

OdbcCommand.ExecuteReader

OracleCommand.ExecuteReader