我必须对数据库进行相当复杂的查询。如果一个/多个参数为空,会发生什么?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);
除了为每个案例编写不同的查询之外,如果我有一个空(null内容)参数,我怎么能处理查询?
编辑:这只是一个简单的例子,我的查询有大约5个参数
答案 0 :(得分:0)
x > null
总是假的。因此,如果您的任一参数值为null,则不会返回任何记录。你可以这样做:
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
始终为非负数。
答案 1 :(得分:0)
您可以检查值,如果为空,则可以指定DBNull.Value
if(age>0)
adapter.SelectCommand.Parameters.AddWithValue("p1", age);
else
adapter.SelectCommand.Parameters.AddWithValue("p1", DBNull.Value);