HOW TO:建立及執行傳回單一值的 SQL 陳述式
若要執行可傳回單一值的 SQL 陳述式,您可以執行一個設定為要執行 SQL 陳述式的 TableAdapter 查詢 (例如 CustomersTableAdapter.CustomerCount())。
如果應用程式未使用 TableAdapter,請在命令物件上呼叫 ExecuteScalar 方法,並將它的 CommandType 屬性設定為 Text (「命令物件」是指應用程式所使用的 .NET Framework 資料提供者的特定命令。 例如,如果您的應用程式使用 .NET Framework Data Provider for SQL Server,則命令物件會是 SqlCommand)。
下列範例將示範如何使用 TableAdapter 或命令物件,執行從資料庫傳回單一值的 SQL 陳述式。 如需使用 TableAdapter 和命令查詢的詳細資訊,請參閱將資料填入資料集。
注意事項 |
---|
根據您目前使用的設定或版本,您所看到的對話方塊與功能表指令可能會與 [說明] 中描述的不同。 若要變更設定,請從 [工具] 功能表中選取 [匯入和匯出設定]。 如需詳細資訊,請參閱 使用設定。 |
使用 TableAdapter 執行傳回單一值的 SQL 陳述式
此範例會示範如何使用 TableAdapter 查詢組態精靈建立 TableAdapter 查詢,然後會提供如何宣告 TableAdapter 的執行個體及執行查詢的相關資訊。
若要使用 TableAdapter 建立傳回單一值的 SQL 陳述式
在 [DataSet 設計工具] 中開啟資料集。 如需詳細資訊,請參閱 HOW TO:在 DataSet 設計工具中開啟資料集。
如果您還沒有 TableAdapter,請建立一個。 如需建立 TableAdapter 的詳細資訊,請參閱 HOW TO:建立 TableAdapter。
如果已經有 TableAdapter 查詢是使用傳回單一值的 SQL 陳述式,請跳至下一個程序<若要宣告 TableAdapter 的執行個體及執行查詢>。否則,請繼續步驟 4,建立傳回單一值的查詢。
以滑鼠右鍵按一下所需的 TableAdapter,並使用捷徑功能表加入查詢。
[TableAdapter 查詢組態精靈] 隨即開啟。
保留 [使用 SQL 陳述式] 的預設值,再按 [下一步]。
選擇 [傳回單一值的 SELECT] 選項,再按 [下一步]。
輸入 SQL 陳述式,或使用 [查詢產生器] 協助您建立,再按 [下一步]。
提供查詢的名稱。
完成精靈;查詢即會加入 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 查詢會根據查詢傳回資料型別 (而不是傳回物件的 ExecuteScalar 方法)。 例如,如果 TableAdapter 查詢選取資料型別為整數的單一資料行,則查詢的傳回值為整數。 如果資料行允許 null 值,則傳回值會是其中一個可為 Null 的型別 (例如,Nullable(Of Integer))。 如需可為 Null 的型別的詳細資訊,請參閱 Nullable。 宣告 TableAdapter 執行個體和執行查詢的完整程式碼應該如下所示 (這個範例假設傳回值為整數,請根據查詢傳回的資料型別來調整程式碼):
Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter() Dim returnValue As Integer returnValue = CType(tableAdapter.GetCustomerCount(), Integer)
NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = new NorthwindDataSetTableAdapters.CustomersTableAdapter(); int returnValue = (int)tableAdapter.GetCustomerCount();
使用命令物件執行傳回單一值的 SQL 陳述式
以下範例將示範如何建立命令,以及執行傳回單一值的 SQL 陳述式。 如需設定及取得命令之參數值的詳細資訊,請參閱 HOW TO:設定及取得命令物件的參數。
此範例使用 SqlCommand 物件,並需要下列項目:
System、System.Data 和 System.Xml 命名空間的參考。
名稱為 SqlConnection1 的資料連接。
資料來源中 SqlConnection1 所要連接之名為 Customers 的資料表 (否則,資料來源中將需要有效的 SQL 陳述式)。
若要使用 DataCommand 執行傳回單一值的 SQL 陳述式
將下列程式碼加入您想執行程式碼的來源方法中。 呼叫命令的 ExecuteScalar 方法 (例如,ExecuteScalar),傳回單一值。 隨即在 Object 中傳回資料。
Dim sqlConnection1 As New SqlConnection("Your Connection String") Dim cmd As New SqlCommand Dim returnValue As Object cmd.CommandText = "SELECT COUNT(*) FROM Customers" cmd.CommandType = CommandType.Text cmd.Connection = sqlConnection1 sqlConnection1.Open() returnValue = cmd.ExecuteScalar() sqlConnection1.Close()
SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); SqlCommand cmd = new SqlCommand(); Object returnValue; cmd.CommandText = "SELECT COUNT(*) FROM Customers"; cmd.CommandType = CommandType.Text; cmd.Connection = sqlConnection1; sqlConnection1.Open(); returnValue = cmd.ExecuteScalar(); sqlConnection1.Close();
安全性
應用程式需要有存取資料庫及執行 SQL 陳述式的權限。