.net dbnull.value sqlparameter, где

У меня проблема с запросом sql:

Я хотел бы сделать что-то вроде:

SELECT * FROM myTable WHERE [myBoolField] IS NULL

если я запущу этот запрос, у меня будут результаты,

но я хотел бы использовать параметры, поэтому я добавляю:

SELECT * FROM myTable WHERE [myBitField] IS @myBitField

с участием

New SqlParameter("@myBitField", dbnull.value)

у меня ошибка в @myBoolField

если я передаю значение, например true или false, это работает (с "= @myBitField")

Кто-нибудь может мне помочь ?

Спасибо


person Testman    schedule 30.07.2015    source источник


Ответы (1)


Вы можете проверить только NULL, используя IS NULL. Вы не можете использовать параметры, и в этом нет никакого смысла.

DBNull.Value можно использовать при вставке или сравнении значений в коде, но не в условиях WHERE, поскольку NULL не равен даже другому NULL.

person Sami Kuhmonen    schedule 30.07.2015
comment
о... хорошо, но dbnull.value равно NULL, так что это странно, не так ли? И, как вы сказали, вы можете использовать его, например, для вставки - person Testman; 30.07.2015
comment
@Testman при использовании параметров запрос обычно анализируется заранее, а параметры не просто подставляются в строку. Парсер увидит IS @parameter и скажет нет, это неприемлемо и все. - person Sami Kuhmonen; 30.07.2015