我应该何时使用Parameters. Add/AddWithValue
?
在以下MSDN示例中,他们对Parameters.Add
使用int
而Parameters.AddWithValue
使用string
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;
command.Parameters.AddWithValue("@demographics", demoXml);
datetime
答案 0 :(得分:36)
如果您希望通过更多工作使所有显式显示,请使用Add
。如果你很懒,请使用AddWithValue
。 AddWithValue
将派生它的值的参数类型,因此请确保它是正确的类型。例如,如果类型正确,您应该将string
解析为int
。
有一个理由可以避免Add
,如果您的参数类型为int
,那么overload that takes the parameter-name and an object之后必须小心another overload is chosen with the SqlDbType
-enum。
来自remarks(方法重载现在是obsolete
):
使用此过载时请小心
SqlParameterCollection.Add
方法指定整数参数值。 因为此重载采用Object类型的值,您必须转换 值为零时,Object类型的整数值 ...如果您不执行此转换,则 编译器假定您正在尝试调用SqlParameterCollection.Add(string, SqlDbType)
超载。