SqlCommand参数添加与AddWithValue

我什么时候应该使用Parameters. Add/AddWithValue 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

如果您希望通过更多工作使所有显式显示,请使用Add 。 如果你很懒,请使用AddWithValueAddWithValue将派生它的值的参数类型,因此请确保它是正确的类型。 例如,如果这是正确的类型,您应该将string解析为int

有一个原因可以避免Add ,如果你的参数类型是int你必须小心使用参数名和对象的重载,因为那时使用SqlDbType -enum选择了另一个重载 。

从备注 (方法重载现在甚至obsolete ):

使用SqlParameterCollection.Add方法的此重载指定整数参数值时请小心。 因为此重载采用Object类型的值,所以当值为零时,必须将整数值转换为Object类型…如果不执行此转换,编译器会假定您正在尝试调用SqlParameterCollection.Add(string, SqlDbType)重载。