#c# #sql #adapter
#c# #sql #адаптер
Вопрос:
Я должен сделать довольно сложный запрос к базе данных.Что произойдет, если один / несколько параметров должны были быть пустыми?Будет ли SQL игнорировать его или возвращать ошибку?Как я должен обрабатывать пустые параметры?Я совсем новичок в SQL.
OleDbDataAdapter adapter1 = new OleDbDataAdapter("SELECT ID FROM table WHERE age>? AND children>? ORDER BY children ASC", conection);
adapter.SelectCommand.Parameters.AddWithValue("p1", age);
adapter.SelectCommand.Parameters.AddWithValue("p2", number_of_children);
Как я мог бы обработать запрос, если у меня есть пустой (нулевое содержимое) параметр, помимо написания другого запроса для каждого случая?
редактировать: это всего лишь простой пример, мой запрос содержит около 5 параметров
Комментарии:
1. Вы можете использовать
age != null ? age : value
.value
является ли переменная, если вашage
null
2. Спасибо, я думаю, что могу заполнить пробелы значением «по умолчанию». Большое спасибо!
Ответ №1:
x > null
всегда будет иметь значение false. Поэтому, если какое-либо из ваших значений параметра равно нулю, вы не получите никаких записей обратно. Вы могли бы сделать что-то вроде:
OleDbDataAdapter adapter1 = new OleDbDataAdapter(
"SELECT ID FROM table WHERE (age> NVL(?,-1)) AND (children> NVL(?,-1) ORDER BY children ASC", conection);
adapter.SelectCommand.Parameters.AddWithValue("p1", age);
adapter.SelectCommand.Parameters.AddWithValue("p2", number_of_children);
Предполагая, что age
и children
всегда неотрицательны.
Ответ №2:
Вы можете проверить значение, и если оно равно нулю, вы можете назначить DBNull.Value
if(age>0)
adapter.SelectCommand.Parameters.AddWithValue("p1", age);
else
adapter.SelectCommand.Parameters.AddWithValue("p1", DBNull.Value);