演示ADO.NET使用存儲過程獲取數(shù)據(jù)
ADO.NET經(jīng)過長時間的發(fā)展,很多用戶都很了解ADO.NET了,這里我發(fā)表一下個人理解,和大家討論討論。代碼并不創(chuàng)建 Connection 對象或 Command 對象。事實上,沒有這些對象,ADO.NET 便無法工作,但它們是在后臺創(chuàng)建并使用的。實例化 SqlDataAdapter 的代碼行傳入 SQL 字符串(用于配置后臺 Command 對象)和連接字符串(用于配置后臺 Connection 對象)。
我們可以將此代碼更改為使用顯式 Connection 和 Command 對象,以便稍稍遠離演示軟件。在表單上再放置一個按鈕,并將以下代碼放到 Click 事件中。
- Dim sConnectionString As String = _
- "server=localhost;uid=sa;pwd=;database=Northwind"
- Dim sSQL As String = "SELECT * FROM Products"
- Dim cnNorthwind As New SqlConnection(sConnectionString)
- Dim cmdProducts As New SqlCommand(sSQL, cnNorthwind)
- Dim daGetProducts As New SqlDataAdapter(cmdProducts)
- Dim dsProducts As New DataSet()
- daGetProducts.Fill(dsProducts, "Products")
- DataGrid1.DataSource = dsProducts.Tables("Products")
#T#此代碼通過顯式創(chuàng)建 Connection 和 Command 對象,并將這些對象附加到 DataAdapter,說明了 DataAdapters 的常用性。通過在實例化 DataAdapter 時傳入 cmdProducts,DataAdapter 的 SelectCommand 將自動設置。然后,可以立即使用 DataAdapter 訪問數(shù)據(jù)庫。此代碼的結(jié)果與前一示例中的結(jié)果相同。盡管它有點接近真實軟件,但由于數(shù)據(jù)訪問是通過 SQL 語句實現(xiàn)的,因此仍然屬于演示軟件。
ADO.NET使用簡單存儲過程獲取數(shù)據(jù)
如何將此演示軟件更改為ADO.NET使用存儲過程?只需更改幾行代碼。在表單上再放置一個按鈕,并將以下代碼放到 Click 事件中:
- Dim sConnectionString As String = _
- "server=localhost;uid=sa;pwd=;database=Northwind"
- Dim cnNorthwind As New SqlConnection(sConnectionString)
- Dim cmdProducts As New _
- SqlCommand("十件最貴的產(chǎn)品", cnNorthwind)
- cmdProducts.CommandType = CommandType.StoredProcedure
- Dim daGetProducts As New SqlDataAdapter(cmdProducts)
- Dim dsProducts As New DataSet()
- daGetProducts.Fill(dsProducts, "Products")
- DataGrid1.DataSource = dsProducts.Tables("Products")
實例化 Command 對象時,此代碼不使用 SQL 語句并替換為要ADO.NET使用的存儲過程名稱。此外,Command 對象的 CommandType 屬性必須設置為 StoredProcedure。此后的代碼與上一個示例非常相似,但它返回不同的數(shù)據(jù)。存儲過程查找十件最貴的產(chǎn)品,并只返回每個產(chǎn)品的名稱和價格。