C# OleDbDataAdapter空参数值
我必须对数据库进行非常复杂的查询。如果一个或多个参数为空,会发生什么情况?SQL会忽略它还是返回错误?我应该如何处理空参数?我对SQL非常陌生C# OleDbDataAdapter空参数值,c#,sql,adapter,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.A
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个参数x>null将始终为false。因此,如果您的任何一个参数值为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);
假设年龄和子女始终为非负。您可以检查该值,如果该值为null,则可以分配DBNull.value
你可以用年龄无效的年龄:价值。如果你的年龄为零,那么价值就是变量。谢谢你,我想我可以用这样的价值来填补空白。非常感谢!
if(age>0)
adapter.SelectCommand.Parameters.AddWithValue("p1", age);
else
adapter.SelectCommand.Parameters.AddWithValue("p1", DBNull.Value);