各位朋友:
如果我没有记错的话,可以通过为每个参数指定SqlDbType或不为每个参数指定sql来生成参数化的sql查询。似乎我可以通过仅提供参数名称和参数值来构造SqlParameter。指定SqlDbType的好处是什么?
发布于 2010-12-17 00:41:44
这样做的好处是:您可以清楚地控制参数的SqlDbType。
否则,ADO.NET必须根据您在.AddWithValue方法中提供的值进行猜测。这些猜测在大多数情况下都是很好的--但是如果你提供了一个DBNull.Value,那么要做出一个经过深思熟虑的猜测就有点棘手了……
此外,如果您提供了一个字符串,那么能够指定最大值通常是有益的。字符串参数长度(存储过程中VARCHAR(x)定义中的x )。如果不这样做,ADO.NET将使用当前长度,这有时可能是一件好事,有时也可能是件坏事。
所以总的来说:它只会给你更多的控制权,而且你的意图更明确/更清晰。
发布于 2010-12-17 00:43:07
如果指定SqlDbType,就可以确保根据提供SqlDbType对提供的参数值进行验证,因此如果数据不匹配,就会更早地捕获错误(否则会从SQL Server获得异常)。
发布于 2010-12-17 02:16:53
我同意通过使用特定的SqlDbType,您可以获得更多的控制权。在处理文本时需要更多控制的另一个原因是在处理unicode文本时。前面的例子,使用SqlDbType.NVarChar与SqlDbType.VarChar。
https://stackoverflow.com/questions/4462939
复制相似问题