【问题标题】:How to handle if ExecuteScalar is null如果 ExecuteScalar 为空,如何处理
【发布时间】:2019-08-21 06:42:53
【问题描述】:

如果 ExecuteScalar 为空,我希望您能帮助我了解如何在 C# 中处理异常。我正在尝试,但我得到一个空引用异常。这是我的代码

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;
      }
}

【问题讨论】:

标签: c# sqlite xamarin


【解决方案1】:

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

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

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

【讨论】:

  • 我实际上并没有通过使用您的代码来解决它,但您提到我的查询返回 null 但我告诉 ExecuteScalarAsync 这应该是一个 int。所以从你的陈述来看,我是这样做的,而且奏效了。
【解决方案2】:

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

公共异步任务 SumItemAsync() {

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

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

        else
        {
            return "0.00";
        }

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 2018-08-11
    • 2017-11-25
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多