OleDbDataAdapter пустое значение параметра

#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);