如果ExecuteScalar为null,如何处理

时间:2019-08-21 06:42:53

标签: c# sqlite xamarin

如果ExecuteScalar为null,我希望您提供有关如何在C#中处理和异常的帮助。我正在尝试,但是得到了空引用exceprion。这是我的代码

public async Task<int> SumItemAsync()
{
      Object data = await db.ExecuteScalarAsync<int>("SELECT 
      SUM(Amount) FROM Spent");
      if (data != null)
      {
          return Convert.ToInt32(data);
      }
      else
      {
          return 0;
      }
}

2 个答案:

答案 0 :(得分:1)

我认为问题在于您的查询返回了null,但是您告诉ExecuteScalarAsync应该是int。将其更改为可为null的int。

var data = db.ExecuteScalarAsync<int?>("SELECT SUM(Amount) FROM Spent")
return data ?? 0;

然后您可以稍微简化返回表达式。

答案 1 :(得分:-1)

我实际上没有通过使用您的代码来解决它,但是您提到我的查询返回null,但是我告诉ExecuteScalarAsync应该是一个int。因此,根据您的陈述,我做到了这一点,并且奏效了。还是谢谢你

  

公共异步任务SumItemAsync()           {

        var data = await db.ExecuteScalarAsync<String>("SELECT SUM(TotalAmount) FROM Spent");

        if (data != null)
        {
            return data;
        }

        else
        {
            return "0.00";
        }