8

伙计们,

除非我弄错了,否则可以通过为每个参数指定或不指定 SqlDbType 来生成参数化的 sql 查询。看来我可以通过仅提供参数名称和参数值来构造一个 SqlParameter 。指定 SqlDbType 有什么好处?

4

4 回答 4

6

好处是:您可以清楚地控制SqlDbType参数是什么。

否则,ADO.NET 必须根据您在.AddWithValue方法中提供的值进行猜测。这些猜测在大多数情况下都非常好 - 但如果你提供一个DBNull.Value,那么做出一个经过深思熟虑的猜测有点棘手......

此外,如果您提供一个字符串,那么能够指定最大值通常是有益的。该字符串参数的长度(在存储过程x中的VARCHAR(x)定义中)。如果您不这样做,ADO.NET 将使用当前长度,这有时可能是好事或坏事。

总的来说:它只是给你更多的控制权,并且更明确/更清楚你的意图是什么。

于 2010-12-16T16:41:43.540 回答
2

如果您指定 SqlDbType,您可以确保您为参数提供的值根据提供的 SqlDbType 进行验证,因此如果数据不适合您,您会更早地发现错误(否则您会从 SQL Server 获得异常)。

于 2010-12-16T16:43:07.283 回答
1

我同意通过使用特定的 SqlDbType,您可以获得更多控制权。在处理文本时需要更多控制的另一个原因是在处理 unicode 文本时。例如,使用 SqlDbType.NVarChar 与 SqlDbType.VarChar。

于 2010-12-16T18:16:53.327 回答
0

主要优点是性能。如果不指定参数类型,SqlClient 引擎会根据参数值进行推断。如果您在设计时就知道参数类型,那么指定它是一种避免推理步骤成本的简单方法。

于 2010-12-16T16:40:53.887 回答