Разница с параметрами .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
так как он сохраняет мое время кодирования. Так что лучше использовать? Что безопасно использовать? Улучшает ли производительность?
Ответы
Ответ 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.