ADO.NET经过长时间的发展,很多用户都很了解ADO.NET了,这里我发表一下个人理解,和大家讨论讨论。代码并不创建 Connection 对象或 Command 对象。事实上,没有这些对象,ADO.NET 便无法工作,但它们是在后台创建并使用的。实例化 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#此代码通过显式创建 Connection 和 Command 对象,并将这些对象附加到 DataAdapter,说明了 DataAdapters 的常用性。通过在实例化 DataAdapter 时传入 cmdProducts,DataAdapter 的 SelectCommand 将自动设置。然后,可以立即使用 DataAdapter 访问数据库。此代码的结果与前一示例中的结果相同。尽管它有点接近真实软件,但由于数据访问是通过 SQL 语句实现的,因此仍然属于演示软件。
ADO.NET使用简单存储过程获取数据
如何将此演示软件更改为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("十件最贵的产品", 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。此后的代码与上一个示例非常相似,但它返回不同的数据。存储过程查找十件最贵的产品,并只返回每个产品的名称和价格。