ADO.NET存储过程调用举例分析
这篇文章主要讲解了“ADO.NET存储过程调用举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET存储过程调用举例分析”吧!
此示例很简单,因为存储过程不需要任何输入参数。也就是说,查找十件最贵的产品不需要任何外部信息。无需外界帮助,存储过程即可完成此操作。然而,多数存储过程都需要输入参数来执行其功能。在下一个示例中,让我们看看如何向ADO.NET存储过程传递输入参数。我们将使用 CustomerID 来获取相关客户的所有订单,并使用名为 CustOrderHist 的ADO.NET存储过程(已存在于 Northwind 数据库中)。
在已使用的表单上再创建一个按钮,并将以下代码行放到按钮的 Click 事件后面:
Dim sConnectionString As String = _ "server=localhost;uid=sa;pwd=;database=Northwind" Dim cnNorthwind As New SqlConnection(sConnectionString) Dim cmdOrders As New SqlCommand("CustOrderHist", cnNorthwind) cmdOrders.CommandType = CommandType.StoredProcedure ' 为存储过程设置参数 Dim prmCustomerID As New SqlParameter() prmCustomerID.ParameterName = "@CustomerID" prmCustomerID.SqlDbType = SqlDbType.VarChar prmCustomerID.Size = 5 prmCustomerID.Value = "ALFKI" cmdOrders.Parameters.Add(prmCustomerID) Dim daGetOrders As New SqlDataAdapter(cmdOrders) Dim dsOrders As New DataSet() daGetOrders.Fill(dsOrders, "Orders") DataGrid1.DataSource = dsOrders.Tables("Orders")
此代码与上一个示例中的代码非常相似,不同之处在于创建 Command 对象之后,为其配置了 Parameter 对象并将此对象添加到 Command 的参数集合中。在此示例中(更接近于演示软件)将对客户 ID 进行硬编码,参数的 Value 属性通常会设置为某些用户输入数据。但是,参数的其他属性可以完全象此示例中那样设置。此示例中的所有参数设置都是显式设置。某些开发人员喜欢这种样式,因为它便于说明。但某些开发人员喜欢使用代码行较少的等价方法:
Dim sConnectionString As String = _ "server=localhost;uid=sa;pwd=;database=Northwind" Dim cnNorthwind As New SqlConnection(sConnectionString) Dim cmdOrders As New SqlCommand("CustOrderHist", cnNorthwind) cmdOrders.CommandType = CommandType.StoredProcedure cmdOrders.Parameters.Add(New _ SqlParameter("@CustomerID", SqlDbType.VarChar, 5)) cmdOrders.Parameters("@CustomerID").Value = "ALFKI" Dim daGetOrders As New SqlDataAdapter(cmdOrders) Dim dsOrders As New DataSet() daGetOrders.Fill(dsOrders, "Orders") DataGrid1.DataSource = dsOrders.Tables("Orders")
此代码与上一示例的作用完全相同。但每个参数只需要两行代码,而不是六行。如果存储过程包含大量参数(如后面某些示例所示),所需代码行的多少就会有明显区别,因此在后面部分,我们将使用此表单。
感谢各位的阅读,以上就是“ADO.NET存储过程调用举例分析”的内容了,经过本文的学习后,相信大家对ADO.NET存储过程调用举例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341