Подтвердить что ты не робот

Разница с параметрами .Add и Parameters.AddWithValue

В основном Commands имеет Parameters, а параметры имеют такие функции, как Add, AddWithValue и т.д. Во всех обучающих программах, которые я видел, я обычно заметил, что они используют Add вместо AddWithValue,

.Parameters.Add("@ID", SqlDbType.Int)

против

.Parameters.AddWithValue("@ID", 1)

Есть ли причина НЕ использовать AddWithValue? Я бы предпочел использовать это над

Parameters.Add("@ID", SqlDbType.Int, 4).Value = 1

так как он сохраняет мое время кодирования. Так что лучше использовать? Что безопасно использовать? Улучшает ли производительность?

4b9b3361

Ответ 1

С помощью метода Add() вы можете ограничить ввод пользователя, указав тип и длину данных - особенно для столбцов varchar.

.Parameters.Add("@name",SqlDbType.VarChar,30).Value=varName;

В случае AddWithValue() (неявное преобразование значения) метод отправляет значение nvarchar в базу данных.

Ответ 2

Я полагаю, что есть и некоторые минусы использования AddWithValue, которые влияют на SQL Exception Plan, см. раздел "Длина параметра здесь

Ответ 3

Я бы использовал AddWithValue для обычных случаев. И используйте Add (name, dbtype... только тогда, когда ваш тип столбца отличается от того, как .net преобразует тип CLR.