使用 dbnull 访问 sql-参数
access sql-parameter with dbnull
我想更新我的访问数据库中的一些行。在 commandtext-object 中键入整个查询时,一切正常。但是当我尝试使用参数时,DBNull 值无法识别:
我是这样操作的:
using (var connection = new OleDbConnection(CONNECTION_STRING_ACCESS))
{
connection.Open();
using (var command = connection.CreateCommand())
{
//this works
//command.CommandText = "UPDATE MY_TABLE SET COL_1 = '10' WHERE COL_2 = '78' AND COL_3 IS NULL";
//this doesn't work...
command.CommandText = "UPDATE MY_TABLE SET COL_1 = @COL_1 WHERE COL_2 = @COL_2 AND COL_3 = @COL_3
command.Parameters.AddWithValue("@COL_1", 20);
command.Parameters.AddWithValue("@COL_2", 78);
command.Parameters.AddWithValue("@COL_3", DBNull.Value);
var rows_updated = command.ExecuteNonQuery();
Console.WriteLine(rows_updated);
}
}
我如何处理 DBNull 参数来更新行,这些行有 COL_2 = 78 和 COL_3 = [Null]?
仅仅将参数值设置为 DBNull 是行不通的。当我想检查列是否具有空值时,我不得不更改我的 commandtext 对象中的查询,就像他评论中提到的@Reniuz:
UPDATE MY_TABLE SET COL_1 = @COL_1 WHERE COL_2 = @COL_2 AND COL_3 IS NULL
NULL 是未定义的,所以没有什么可以等于 NULL,你必须使用 IS NULL 语法。
您需要一个 IF/ELSE 块来根据 COL_3 的值构建 SQL。如果没有值,则使用 IS NULL 构建 SQL,或者构建 SQL 并绑定变量(您现有的代码)(如果存在)。
见SQL is null and = null
我想更新我的访问数据库中的一些行。在 commandtext-object 中键入整个查询时,一切正常。但是当我尝试使用参数时,DBNull 值无法识别:
我是这样操作的:
using (var connection = new OleDbConnection(CONNECTION_STRING_ACCESS))
{
connection.Open();
using (var command = connection.CreateCommand())
{
//this works
//command.CommandText = "UPDATE MY_TABLE SET COL_1 = '10' WHERE COL_2 = '78' AND COL_3 IS NULL";
//this doesn't work...
command.CommandText = "UPDATE MY_TABLE SET COL_1 = @COL_1 WHERE COL_2 = @COL_2 AND COL_3 = @COL_3
command.Parameters.AddWithValue("@COL_1", 20);
command.Parameters.AddWithValue("@COL_2", 78);
command.Parameters.AddWithValue("@COL_3", DBNull.Value);
var rows_updated = command.ExecuteNonQuery();
Console.WriteLine(rows_updated);
}
}
我如何处理 DBNull 参数来更新行,这些行有 COL_2 = 78 和 COL_3 = [Null]?
仅仅将参数值设置为 DBNull 是行不通的。当我想检查列是否具有空值时,我不得不更改我的 commandtext 对象中的查询,就像他评论中提到的@Reniuz:
UPDATE MY_TABLE SET COL_1 = @COL_1 WHERE COL_2 = @COL_2 AND COL_3 IS NULL
NULL 是未定义的,所以没有什么可以等于 NULL,你必须使用 IS NULL 语法。
您需要一个 IF/ELSE 块来根据 COL_3 的值构建 SQL。如果没有值,则使用 IS NULL 构建 SQL,或者构建 SQL 并绑定变量(您现有的代码)(如果存在)。
见SQL is null and = null