SqlCommand参数Add与AddWithValue

时间:2014-01-14 09:31:38

标签: c# parameters sqlcommand

我应该何时使用Parameters. Add/AddWithValue? 在以下MSDN示例中,他们对Parameters.Add使用intParameters.AddWithValue使用string

command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;

command.Parameters.AddWithValue("@demographics", demoXml);

datetime

最适合使用什么?

1 个答案:

答案 0 :(得分:36)

如果您希望通过更多工作使所有显式显示,请使用Add。如果你很懒,请使用AddWithValueAddWithValue将派生它的值的参数类型,因此请确保它是正确的类型。例如,如果类型正确,您应该将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)超载。