澄清SQL和ADO.net文字参数规范

本文关键字:参数 文字 net SQL ADO 澄清 | 更新日期: 2023-09-27 18:17:43

所以我正在阅读一本关于ADO的书,并且我已经到达了描述ADO中的参数和查询的章节的末尾。在这本书中,它提供了以下代码示例来传递一个参数给SQL server:

Dim paramValue As New SqlParameter("@NewSalary", SqlDbType.Money)
paramValue.Value = 50000@
salaryUpdate.Parameters.Add(paramValue)
paramValue = New SqlParameter("@EmployeeID", SqlDbType.BigInt)
paramValue.Value = 25&
salaryUpdate.Parameters.Add(paramValue)
salaryUpdate.Parameters.AddWithValue("@NewSalary", 50000@)
salaryUpdate.Parameters.AddWithValue("@EmployeeID", 25&)

对于c#它显示

salaryUpdate.Parameters.AddWithValue("@NewSalary", 50000m);
salaryUpdate.Parameters.AddWithValue("@EmployeeID", 25L);

这本书没有真正讨论的是为什么定义的值有和M,L,@,&附加的字符。为什么会这样?vb和c#之间的区别可能只是语法?

试着在MSDN上做一些研究,但是这些类型的例子没有出现在那里,或者看起来是这样。http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

谢谢你的解释

澄清SQL和ADO.net文字参数规范

在VB中。NET和c#中,你可以在常量后面加一个后缀字符来解释它的数据类型。它是VB6时代遗留下来的,用来帮助解决可移植性问题。现在,您应该尝试使用显式常量Const NAME作为Type = value声明,并仅在需要时使用后缀。

VB。MSDN上的。NET类型字符

对于AddWithValuenew SqlParameter语法,后者更可取,因为您可以准确地选择传递给数据库引擎的数据类型和参数的大小。通过这种方式,数据库引擎可以更好地优化查询,并在重新执行查询时重用已经准备好的语句。然而,AddWithValue在简单性和易用性方面有其优点。所以,如果你不担心性能,你也可以使用它。

顺便说一下,这两种语法可以在VB中使用。。NET和c#。它们是。NET库的一部分,可以从任何托管语言
中调用。

添加参数值时,它取决于参数中指定的数据类型。一个正常的例子是你可以在MSDN http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx上找到的。

对于额外的M,L,@,&你不再需要它们了。当我使用AddWithValue或添加参数时,我总是用双引号传递值。