HOW TO:執行傳回資料列的預存程序
若要執行可傳回資料列的預存程序,您可以執行一個設定為要執行預存程序的 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 建立傳回資料列的預存程序
在 [DataSet 設計工具] 中開啟資料集。如需詳細資訊,請參閱 HOW TO:在 DataSet 設計工具中開啟資料集。
如果您還沒有 TableAdapter,請建立一個。如需詳細資訊,請參閱 HOW TO:建立 TableAdapter。
如果已經有 TableAdapter 查詢是呼叫傳回資料列的預存程序,請跳至下一個程序<若要宣告 TableAdapter 的執行個體及執行查詢>。 否則,請繼續步驟 4,建立新查詢,以便呼叫傳回資料列的預存程序。
以滑鼠右鍵按一下所需的 TableAdapter,並使用捷徑功能表加入查詢。
TableAdapter 查詢組態精靈隨即開啟。
按 [下一步],然後選取 [使用現有的預存程序],再按 [下一步]。
從下拉式清單中選取預存程序,再按 [下一步]。
保留預設值 [表格式資料],再按 [下一步]。
為每個您要建立的方法,提供名稱 ([填入 DataTable] 和 (或) [傳回 DataTable] 方法)。
完成精靈;查詢即會加入 TableAdapter。
建置您的專案。
若要宣告 TableAdapter 的執行個體及執行查詢
宣告 TableAdapter 的執行個體,其中包含您想執行的查詢。
若要使用設計階段工具來建立執行個體,請從 [工具箱] 拖曳您要的 TableAdapter (您專案中的元件便會出現在符合這個專案名稱標題的 [工具箱] 內)。 如果 TableAdapter 未出現在 [工具箱] 中,則您可能需要建置專案。
-或-
若要在程式碼中建立執行個體,請將下列程式碼取代為 DataSet 和 TableAdapter 的名稱。
Dim tableAdapter As New DataSetTableAdapters.TableAdapter
注意事項 TableAdapter 不是實際位於其關聯的資料集類別之內。每一個資料集在其命名空間中,都會有對應的 TableAdapter 集合。例如,如果您有一個名為 SalesDataSet 的資料集,則會有一個包含其 TableAdapter 的 SalesDataSetTableAdapters 命名空間。
呼叫查詢時,就像是呼叫程式碼中的任何其他方法一樣。您的查詢是 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 物件,並需要下列項目:
System、System.Data 和 System.Xml 命名空間的參考。
名稱為 SqlConnection1 的資料連接。
資料來源中 SqlConnection1 所要連接之名為 Customers 的資料表 (否則,資料來源中將需要有效的 SQL 陳述式)。
若要使用命令物件,以程式設計方式執行傳回資料列的預存程序
將下列程式碼加入您想執行程式碼的來源方法中。呼叫命令的 ExecuteReader 方法 (例如,ExecuteReader),傳回資料列。隨即在 DataReader 中傳回資料。如需存取 DataReader 資料的詳細資訊,請參閱Retrieving Data Using a 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();
安全性
應用程式必須具有存取資料庫及執行預存程序的權限。