C# 从数据库获取值时,Value始终返回True

C# 从数据库获取值时,Value始终返回True,c#,asp.net,sql,dbnull,C#,Asp.net,Sql,Dbnull,我试图用0避免数据库空值,如果不是空值,则获取原始值 但我有一些问题 以下是我的示例代码: int Value = 0; for(int i = 0; i < tblValue.Rows.Count; i++) { if (tblValue.Rows[i][""]== DBNull.Value)//Here it always returns true.. even there are values at Position 1 and {

我试图用0避免数据库空值,如果不是空值,则获取原始值

但我有一些问题

以下是我的示例代码:

    int Value = 0;
    for(int i = 0; i < tblValue.Rows.Count; i++)
    {
      if (tblValue.Rows[i][""]== DBNull.Value)//Here it always returns true.. even there are values at Position 1 and 
      {
         Value += 0;                        
      }
      else
      {
         Value += Convert.ToInt32(tblValue.Rows[i][""]);
      }

   }
int值=0;
for(int i=0;i
有什么想法吗

我是否以错误的方式检查DBNUll值?

是。Try(DBNull.Value.Equals(tblValue.Rows[i][“”])

试试这个:

int Value = 0;
for(int i = 0; i < tblValue.Rows.Count; i++)
{
    if (!IsDBNull(tblValue.Rows[i][""])) 
    {
        Value += Convert.ToInt32(tblValue.Rows[i][""]);
    }
}
int值=0;
for(int i=0;i

如果数据库值为
非空

为什么要检查名称为空的列?这在我看来是错误的。(为什么要麻烦
值+=0
呢?)您正在为空列编制索引“”。确实要执行此操作吗?您的数据库查询是什么,或者它返回什么列?顺便说一下,请检查您是否不希望在数据库中使用
选择sum(COLUMNNAME)进行此求和这只是一个示例代码。我的实际代码中有列名。如果(tblValue.Rows[i][Column]为DBNull){…},它不应该是
?至少我一直都是这样做的。你确定你的表不是空的吗?谢谢,但它不工作。我得到了相同的结果。它在位置1上返回空值,我知道db值不是空的..:(因此,如果这不起作用,并且您正试图替换null的值,请改为在SQL语句中尝试:而不是:“从MOOSE中选择LLAMA”do:“从MOOSE中选择COALESCE(LLAMA,0)”如果LLAMA为null,这将用0替换它。@Alxandr-是的,这很好,但这仍然意味着您的代码无效(如中所示,它不会编译)不