c# - 值为 DBNull.Value 的 C# MySqlCommand 参数不起作用
问题描述
为什么 DBNull.Value 的值在以下代码中不起作用?我不断得到 false 作为返回值,而我确信有匹配的记录。
(machineNumber 确实具有“b”的值,所以这不是问题)
MySqlCommand cmd = new MySqlCommand("SELECT * FROM `sparter` WHERE `id` = @machineNumber AND `account_id` = @null", conn);
cmd.Parameters.AddWithValue("@machineNumber", machineNumber);
cmd.Parameters.AddWithValue("@null", DBNull.Value);
using (var reader = cmd.ExecuteReader())
{
return reader.read();
}
虽然此查询在 MySqlWorkbench 中工作:
SELECT * FROM `sparter` WHERE `id` = "b" AND `account_id` IS NULL
解决方案
事实上,在 MySQL 中使用= or != null
是行不通的。使用IS NULL
或IS NOT NULL
。
你可以试试这个:
MySqlCommand cmd = new MySqlCommand("SELECT *
FROM `sparter`
WHERE `id` = @machineNumber AND `account_id` is @null", conn);
推荐阅读
- google-chrome-extension - webm提取aac时,时长不一致
- python-3.x - future.graph 模块的 merge_hierarchicals 中的 merge_func 有什么作用?
- rfc - 网络配置通知
- json - 公司代码如何在 Amadeus Fligh Offers Search API 中发挥作用?
- selenium - 如何将列表中的值存储到 selenium webdriver 中的变量中
- apache-flink - 如果 source/sink/operator 具有未定义的 uid 或名称,则 Flink 作业失败
- angular - 检测孩子何时被父鼠标事件悬停
- python - 多处理:我想更好地理解这段代码
- android - 更改 LayoutParams 后 getLocationInWindow 不会更改
- ios - Swift 无法通过下标分配:'peerDeviceSettings' 是一个只能获取的属性"