Зачем нам нужен SqlCeCommand.Parameters.AddWithValue () для вставки значения? - PullRequest
1 голос
/ 08 апреля 2011

У меня есть настольное приложение C # WPF, которое использует SQL Compact 3.5 в качестве встроенной базы данных.В функции вставки он имеет

using (SqlCeCommand com = new SqlCeCommand(
    "INSERT INTO FooTable VALUES(@num)", con))
{
    com.Parameters.AddWithValue("@num", num);
    com.ExecuteNonQuery();
}

. Я не понимаю, что такое com.Parameters.AddWithValue ().Я закомментировал эту строку кода и функция вставки работает точно так же.Я думал, ExecuteNonQuery выполняет вставку, так что же это за Parameters.AddWithValue?

1 Ответ

1 голос
/ 08 апреля 2011

@num - параметр TSQL. Без AddWithValue(@num, num) это не определено и не присвоено значение. Он просто не будет работать с опущенным параметром, и даже если бы он работал: откуда он взял бы выбранное вами значение (num)? Абсолютный лучший , который он может сделать, будет использовать null, который не был вашим намерением; более типично это просто не выполнится (вы уверены, что не глотаете исключение где-нибудь?).

Обратите внимание, что объединять значение в самой строке не рекомендуется; это может привести к риску внедрения SQL-кода и может снизить производительность (повторное использование плана; хотя не уверен, что это применимо к CE - CE вполне может не беспокоиться о кэшированных планах).

...