Хороший вопрос, но на практике у меня не было времени такой проблемы. Если я использую AddParameter
, тогда я также создаю строку для запроса в том же фрагменте кода. Поэтому, если я знаю, что теперь мне нужно искать «@ field2», равное NULL, я решаю, построить ли
string query = "SELECT * " +
"FROM greatTable " +
"WHERE field1 = @field1";
или
string query = "SELECT * " +
"FROM greatTable " +
"WHERE field1 = @field1 AND field2 IS NULL";
и добавить только один параметр
cm.AddParameter("@field1", "352515");
Так что у меня нет времени на проблему, которую вы описываете.
ОБНОВЛЕНО : Каков наилучший (или единственный правильный) способ, которым пользовательский ввод НЕДЕЙСТВИТЕЛЕН, вы должны решить на основе контекста. В большинстве случаев «AND field2 IS NULL» не требуется, но я прочитал ваш вопрос так, что в вашем особом случае пользователь может явно выбрать не «» (пустая строка), а значение NULL.