首页 > 解决方案 > 值为 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

标签: c#sqlparametersmariadb

解决方案


事实上,在 MySQL 中使用= or != null是行不通的。使用IS NULLIS NOT NULL

你可以试试这个:

MySqlCommand cmd = new MySqlCommand("SELECT * 
                                     FROM `sparter`
                                     WHERE `id` = @machineNumber AND `account_id` is @null", conn);

推荐阅读