2

所以我正在阅读一本关于 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

感谢您的任何澄清

4

2 回答 2

4

在 VB.NET 和 C# 中,您可以将后缀字符添加到常量值以解释其数据类型。它是 VB6 时代遗留下来的,用于帮助解决可移植性问题。现在,您应该尝试使用显式常量Const NAME As Type = value声明,并仅在需要时使用后缀。

请参阅 MSDN 上的 VB.NET 类型字符

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

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

于 2013-06-10T20:20:40.187 回答
0

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

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

于 2013-06-10T20:19:53.467 回答