OleDbDataAdapter空参数值

时间:2014-06-19 14:24:37

标签: c# sql adapter

我必须对数据库进行相当复杂的查询。如果一个/多个参数为空,会发生什么?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个参数

2 个答案:

答案 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);

假设agechildren始终为非负数。

答案 1 :(得分:0)

您可以检查值,如果为空,则可以指定DBNull.Value

if(age>0)
adapter.SelectCommand.Parameters.AddWithValue("p1",  age);
else
adapter.SelectCommand.Parameters.AddWithValue("p1",  DBNull.Value);