共用方式為


如何:執行傳回資料列的預存程序

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

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

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

注意事項注意事項

您的電腦對於下列指示中某些 Visual Studio 使用者介面項目的名稱或位置,可能會顯示不同的資訊:您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱<Visual Studio 中的自訂開發設定>。

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

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

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

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

  2. 如果您還沒有 TableAdapter,請建立一個。 如需詳細資訊,請參閱 如何:建立 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");
    

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

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

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

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

  • 名稱為 SqlConnection1 的資料連接。

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

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

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

    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();
    

安全性

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

請參閱

工作

如何:建立 TableAdapter 查詢

如何:以資料填入資料集

如何:設定及取得命令物件的參數

參考

SqlCommand.ExecuteReader

OleDbCommand.ExecuteReader

OdbcCommand.ExecuteReader

OracleCommand.ExecuteReader

概念

將資料填入資料集