使用Add()和AddWithValue()添加MySql参数之间的区别

时间:2010-11-22 19:39:47

标签: .net mysql mysql-parameter

根据本文档中的MySql C.7.9.6. Changes in MySQL Connector/NET 5.0.5 (07 March 2007)

  

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

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

我的问题:有没有人知道这两种方法之间是否有任何功能差异?我找不到合适的文件。

修改

Microsoft发表了关于SqlParameterCollection的说明:

  

AddWithValue取代了   SqlParameterCollection.Add方法   采用String和Object。该   带有字符串的Add重载   并且弃用了一个对象,因为   可能含糊不清的   SqlParameterCollection.Add超载   采用String和SqlDbType   通过a的枚举值   字符串的整数可以是   被解释为是   参数值或相应的   SqlDbType值。使用AddWithValue   每当你想添加一个参数   通过指定其名称和值。

也许是出于同样的原因。

1 个答案:

答案 0 :(得分: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