2

根据本文档C.7.9.6 中的 MySql。MySQL Connector/NET 5.0.5(2007 年 3 月 7 日)中的更改

添加MySqlParameterCollection.AddWithValue该方法并将其标记Add(name, value)为已过时。

我一直在使用.Add直到最近并且没有遇到任何问题。在发现该.AddWithValue方法后,它是可取的,主要是因为它涉及的语法较少。

我的问题:有谁知道这两种方法之间是否有任何功能差异?我找不到关于它们的适当文档。

编辑:

Microsoft 对 SqlParameterCollection 做了以下说明:

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

也许是出于同样的原因。

4

1 回答 1

3

当文档什么都没说时,请查阅源代码。这些方法是相同的(在它们的实现中):

/// <summary>
/// Adds a <see cref="MySqlParameter"/> to the <see cref="MySqlParameterCollection"/> given the specified parameter name and value.
/// </summary>
/// <param name="parameterName">The name of the parameter.</param>
/// <param name="value">The <see cref="MySqlParameter.Value"/> of the <see cref="MySqlParameter"/> to add to the collection.</param>
/// <returns>The newly added <see cref="MySqlParameter"/> object.</returns>
[Obsolete("Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value)")]
public MySqlParameter Add(string parameterName, object value)
{
    return Add(new MySqlParameter(parameterName, value));
}

public MySqlParameter AddWithValue(string parameterName, object value)
{
    return Add(new MySqlParameter(parameterName, value));
}

http://mysql-connector-net-5.0.sourcearchive.com/documentation/5.0.8.1/parameter__collection_8cs-source.html

于 2010-11-22T20:25:26.840 回答