2

可能重复:
Parameters.Add 和 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);

做第一个以确保我正确地转换参数会更好吗?我正在努力使我的代码更安全。

4

2 回答 2

4

根据MSDN

AddWithValue 替换了接受 String 和 Object 的 SqlParameterCollection.Add 方法。由于 SqlParameterCollection 可能存在歧义,不推荐使用带有字符串和对象的 Add 重载。添加采用 String 和 SqlDbType 枚举值的重载,其中通过字符串传递整数可以解释为参数值或相应的 SqlDbType 值。每当您想通过指定参数的名称和值来添加参数时,请使用 AddWithValue

因此,AddWithValue替换了会产生歧义的不推荐使用的重载。

于 2012-12-05T21:44:29.157 回答
2

也许这篇文章会有所帮助 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx

于 2012-12-05T21:46:44.087 回答