ExecuteScalar null值错误

时间:2014-05-07 07:45:46

标签: c# executescalar

这是我的代码..

    object o = DBExecuteScalar(myQuery);
    if ((int.parse(o.ToString())) <= 2 || (o is null))
    {
        // my task....
    }

在此代码中,&#39; o为空&#39;部分是错误的。任何帮助如何在单个if语句中处理这两个条件..我想要的是o的值应该是(null,0,1,2)。 任何帮助?

3 个答案:

答案 0 :(得分:1)

带||首先评估运算符第一个条件 - 您要先检查是否为null。 int.Parse也没有必要。正如RGraham所提到的那样,null不是检查null的正确方法。

 if (o == null || o == DBNull.Value || (int)o <= 2)

答案 1 :(得分:1)

当你在if中反转条件时,它应该工作。

在您的情况下,首先在对象o上调用ToString。但是因为o为null,这将导致异常。 当您颠倒条件的顺序时,则首先进行nullcheck。 or(||)的第二部分仅在第一部分为false时进行评估。这样可以防止发生异常

答案 2 :(得分:1)

在C#中,is运算符检查类型是否相等。您需要检查null为o == null

object o = DBExecuteScalar(myQuery);
if ((o == null) || (int.parse(o.ToString())) <= 2)
{
        // my task....
}

您还需要在尝试对其执行任何操作之前检查null