c# - 使用 dbnull 访问 sql 参数
问题描述
我想更新我的访问数据库中的一些行。在命令文本对象中键入整个查询时,一切正常。但是当我尝试使用参数时,无法识别 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] 的行?
解决方案
NULL 是未定义的,所以没有什么可以等于 NULL,你必须使用 IS NULL 语法。
您需要一个 IF/ELSE 块来构建基于具有 COL_3 值的 SQL。如果没有值,则使用 IS NULL 构建 SQL,或者构建 SQL 并绑定变量(您现有的代码)(如果存在)。
推荐阅读
- c# - 如何为 SonarQube 创建自己的 C# 自定义规则?
- javascript - 量角器中的 by.tagName 与 by.css
- dns - 为什么我不能在我的 CentOS VPS 上与 tcp/3000 上的服务通话
- javascript - JSON 两次返回 url
- python - Ubuntu 18.04 上的张量流
- javascript - 从文件中获取日期,而不是在 js 文件中声明它
- php - 流明中间件排序(优先级)
- batch-file - 如何将多个文件夹复制到目录名称为当前年份和月份的新目录?
- python - 使用 BioPython 读取 fasta 文件时如何修复“生成器”对象不可下标”错误
- python - 如何一次读取多个文本文件并使用数据?