У меня есть asp DropDownList, который используется для фильтрации результатов базы данных. Один из моих фильтров используется для проверки, является ли столбец NULL или NOT NULL:
<asp:DropDownList runat="server" id="activeFilter" CssClass="form-control" AutoPostBack="false" >
<asp:ListItem selected="True" value="">-- Filter By Active/Inactive </asp:ListItem>
<asp:ListItem value="NOT NULL">Active</asp:ListItem>
<asp:ListItem value="NULL">Inactive</asp:ListItem>
</asp:DropDownList>
Затем я пытаюсь вставить его в параметризованный запрос следующим образом:
//called from another method
string query = ".... AND Status=@statusFilter ...."
SqlConnection conn = new SqlConnection(connString)
SqlCommand command = new SqlCommand(query, conn)
command.Parameters.AddWithValue("@statusFilter", statusFilter.SelectedValue);
//other stuff, make sql call
Этот процесс работает для других значений фильтра, например,
"... AND Name=@nameFilter ..."
Где nameFilter может быть "Джон", "Тим", "Эми" и т. Д., Поэтому я предполагаю, что это как-то связано с тем фактом, что NULL и NOT NULL на самом деле не должны быть строками. Любое простое решение для этого? Я вижу, что могу добавить DBNull.Value, но как насчет NOT NULL?
Любая помощь будет высоко ценится.
EDIT:
Извините всех, я допустил ошибку в своем первом посте - я скопировал неверную строку запроса. Моя строка запроса на самом деле
"... AND Date_Completed IS @activeFilter ..."
Я знаю, что не могу сказать, Колонка = Ноль, поэтому я снова прошу прощения. Я собираюсь просмотреть предложения прямо сейчас и обновить всех.
РЕДАКТИРОВАТЬ 2:
Итак, проблема в том, что вы не можете рассматривать NULL / NOT NULL как параметры. Я надеялся, что смогу использовать его в качестве параметра, поскольку у меня было несколько вспомогательных функций для генерации окончательного запроса на основе множества различных фильтров. В конечном счете, это не сработало, и мне нужно было изменить мои методы и напрямую вставить "IS NULL" или "IS NOT NULL", используя блок If / Else.