0

我写了这段代码:

 MySqlCommand command1 = new MySqlCommand("SELECT SUM(standard_one) FROM `challenge` WHERE (SELECT DAYOFWEEK(date)=1) AND challenge_id = @challenge_id and username = @username", db.getConnection());
                command1.Parameters.Add("@challenge_id", MySqlDbType.Int32).Value = comboBox1.SelectedItem;
                command1.Parameters.Add("@username", MySqlDbType.VarChar).Value = globals.username;

问题是有时此命令返回 null。

如何检查命令是否会返回 null?如果是这样,它返回 0?

4

1 回答 1

1

如果该命令将返回 null?如果是这样,它返回 0?

制作 SQL:

SELECT COALESCE(SUM(standard_one), 0) ...

请记住,您将无法区分“没有与 where 子句匹配的值”和“匹配的所有值的总和为 0”。如果这很重要,您要么需要合并到总和中永远不会出现的不同值,例如 -2_147_483_648 或坚持现有的值并在 C# 端检查 null

var x = command1.ExecuteScalar();
if(x == null || x.GetType() == typeof(System.DBNull))
  ...
else
  ..cast to int etc.. 
于 2021-12-01T08:54:29.717 回答