ADO.NET中SQL参数的默认大小

4

sqlcommand.Parameters.Add(...)函数有多个重载。其中一些不需要指定参数大小,而另一些则需要。默认情况下设置了什么大小?不设置参数大小是否安全?它会影响性能吗?

2个回答

4

来自SqlParameter.Size Property文档:

如果未明确设置,则大小将从指定参数值的实际大小推断出。

293315上,Peter Wone有一个很棒的回复,更详细地描述了这实际上意味着什么。


谢谢。您提供的链接非常有用。 - Roma
没关系。通过读彼得的解释,我学到了一两件事情,所以我应该感谢提出这个问题 :-) - Dan F

1

在从.Net代码发送参数到SQL Server时,可能会发送超过数据库数据类型的参数。如果在创建参数时在您的.Net代码中设置大小,则如果发送了太大的值,将引发异常。因此,您将更早地知道并且不会浪费数据库调用。

或者,您可能希望为某些文本字段设置最大字符数。数据库可能允许400个字符的姓氏,但您只想要varchar 100。

参数Nullable属性类似。它是可选的,但是如果在sproc调用中参数不能为null,则在您的.Net代码中使其不可为空将更早地突出显示问题。


另外,您可能希望为某些文本字段设置最大字符数。数据库可能允许长达400个字符的姓氏,但您只需要varchar 100个字符。在这种情况下,如果您传递超过100个字符(但少于400个字符以便被DB接受)的字符串,它将被剪切,您可能会丢失一些数据。 - Roma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接