SqlParameter.Add和AddWithValue之间的区别

时间:2012-12-05 21:38:57

标签: c# .net .net-3.5 sqlparameters

  

可能重复:
  Difference between Parameters.Add and Parameters.AddWithValue

从MSDN代码来看,这两者之间有什么区别:

    SqlCommand command = new SqlCommand(commandText, connection);

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

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

做第一个以确保我正确地投射参数是否更好?我试图让我的代码更安全。

2 个答案:

答案 0 :(得分:3)

根据MSDN

  

AddWithValue替换了采用的SqlParameterCollection.Add方法   字符串和对象。 Add的重载,它接受一个字符串和一个   对象因为可能含糊不清而被弃用   SqlParameterCollection 即可。添加带有String和a的重载   SqlDbType枚举值,其中传递带字符串的整数   可以解释为参数值或   对应的SqlDbType值。 随时使用AddWithValue   通过指定名称和值来添加参数。

因此AddWithValue替换了不推荐的重载,从而产生歧义。

答案 1 :(得分:2)