Разница между добавлением параметров MySql с помощью Add () и AddWithValue () - PullRequest
2 голосов
/ 22 ноября 2010

Согласно MySql в этом документе C.7.9.6.Изменения в MySQL Connector / NET 5.0.5 (07 марта 2007 г.) :

Добавлен MySqlParameterCollection.AddWithValue и помечен метод Add(name, value) как устаревший.

Я использовал .Add до недавнего времени и не испытывал никаких проблем.Открыв метод .AddWithValue, он предпочтителен прежде всего потому, что в нем меньше синтаксиса.

Мой вопрос: кто-нибудь знает, есть ли функциональные различия между этими двумя методами?Я не могу найти соответствующую документацию по ним.

Редактировать:

Microsoft делает эту заметку о SqlParameterCollection:

AddWithValue заменяет SqlParameterCollection.Add метод, который принимает строку и объект.Перегрузка Add, которая принимает строку и объект устарела из-за возможной неоднозначности с перегрузкой SqlParameterCollection.Add, которая принимает значение перечисления String и SqlDbType, где передача целого числа со строкой может быть интерпретирована как значение параметраили соответствующее значение SqlDbType.Используйте AddWithValue всякий раз, когда вы хотите добавить параметр, указав его имя и значение.

Возможно, по той же причине.

1 Ответ

3 голосов
/ 22 ноября 2010

Если в документации ничего не сказано, обратитесь к источнику. Эти методы идентичны (в их реализации):

/// <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 / документация / 5.0.8.1 / parameter__collection_8cs-source.html

...