合理使用ADO.NET参数

使用ADO.NET参数还是比较常用的,于是我研究了一下对 SqlCommand 和存储过程使用参数,在这里拿出来和大家分享一下,希望对大家有用。在数据驱动的应用程序中,存储过程具有许多优势。通过利用存储过程,数据库操作可以封装在单个命令中,为获取***性能而进行优化并通过附加的安全性得到增强。尽管可以通过在 SQL 语句中传递后接参数自变量的存储过程名称来调用相应的存储过程,但如果使用 ADO.NET DbCommand 对象的 Parameters 集合,则可以让您更为明确地定义存储过程参数,并访问输出参数和返回值。

创新互联10多年企业网站设计服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,企业网站设计及推广,对PE包装袋等多个行业拥有多年的网站设计经验的网站建设公司。

使用ADO.NET参数化语句在服务器上通过使用 sp_executesql 执行,sp_executesql 允许重复使用查询计划。sp_executesql 批处理命令中的本地光标或变量对于调用 sp_executesql 的批处理命令是不可见的。数据库上下文中的更改只持续到 sp_executesql 语句的结尾。有关更多信息,请参见 SQL Server 联机丛书。

#T#对 SqlCommand 使用参数以执行 SQL Server 存储过程时,添加到 Parameters 集合中的参数的名称必须与存储过程中参数标记的名称相匹配。SQL Server 的 .NET Framework 数据访问接口不支持问号 (?)使用ADO.NET参数传递到 SQL 语句或存储过程的占位符。它将存储过程中的参数视为命名参数,并搜索匹配的参数标记。例如,通过使用名为 @CustomerID 的参数定义 CustOrderHist 存储过程。您的代码在执行该存储过程时,它也必须使用名为 @CustomerID 的参数。

此示例演示了如何调用 Northwind 示例数据库中的 SQL Server 存储过程。存储过程的名称为 dbo.SalesByCategory,它具有名为 @CategoryName 的输入参数,其数据类型为 nvarchar(15)。该代码在 using 代码块内创建一个新 SqlConnection,以便在过程结束时释放连接。会创建 SqlCommand 和 SqlParameter 对象,并设置其属性。SqlDataReader 会执行 SqlCommand 并从存储过程返回结果集,以在控制台窗口中显示相关输出。

您可以选择使用任一重载构造函数在一个语句中设置多个属性,而不是创建 SqlCommand 和 SqlParameter 对象,然后在各个语句中设置属性。

Visual Basic

 
 
  1. Shared Sub GetSalesByCategory(ByVal connectionString As String, _
  2. ByVal categoryName As String)
  3. Using connection As New SqlConnection(connectionString)
  4. ' Create the command and set its properties.
  5. Dim command As SqlCommand = New SqlCommand()
  6. command.Connection = connection
  7. command.CommandText = "SalesByCategory"
  8. command.CommandType = CommandType.StoredProcedure
  9. ' Add the input parameter and set its properties.
  10. Dim parameter As New SqlParameter()
  11. parameter.ParameterName = "@CategoryName"
  12. parameter.SqlDbType = SqlDbType.NVarChar
  13. parameter.Direction = ParameterDirection.Input
  14. parameter.Value = categoryName
  15. ' Add the parameter to the Parameters collection.
  16. command.Parameters.Add(parameter)
  17. ' Open the connection and execute the reader.
  18. connection.Open()
  19. Dim reader As SqlDataReader = command.ExecuteReader()
  20. If reader.HasRows Then
  21. Do While reader.Read()
  22. Console.WriteLine("{0}: {1:C}", _
  23. reader(0), reader(1))
  24. Loop
  25. Else
  26. Console.WriteLine("No rows returned.")
  27. End If
  28. End Using
  29. End Sub

C#

 
 
  1. static void GetSalesByCategory(string connectionString, 
  2. string categoryName)
  3. {
  4. using (SqlConnection connection = new SqlConnection(connectionString))
  5. {
  6. // Create the command and set its properties.
  7. SqlCommand command = new SqlCommand();
  8. command.Connection = connection;
  9. command.CommandText = "SalesByCategory";
  10. command.CommandType = CommandType.StoredProcedure;
  11. // Add the input parameter and set its properties.
  12. SqlParameter parameter = new SqlParameter();
  13. parameter.ParameterName = "@CategoryName";
  14. parameter.SqlDbType = SqlDbType.NVarChar;
  15. parameter.Direction = ParameterDirection.Input;
  16. parameter.Value = categoryName;
  17. // Add the parameter to the Parameters collection. 
  18. command.Parameters.Add(parameter);
  19. // Open the connection and execute the reader.
  20. connection.Open();
  21. SqlDataReader reader = command.ExecuteReader();
  22. if (reader.HasRows)
  23. {
  24. while (reader.Read())
  25. {
  26. Console.WriteLine("{0}: {1:C}", reader[0], reader[1]);
  27. }
  28. }
  29. else
  30. {
  31. Console.WriteLine("No rows found.");
  32. }
  33. reader.Close();
  34. }
  35. }

当前名称:合理使用ADO.NET参数
文章路径:http://www.shufengxianlan.com/qtweb/news0/248200.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联