[向数据表添加新列时出现DBNull错误

问题描述 投票:0回答:1

我知道已经有很多关于此的帖子,但是我没有找到任何有助于我理解或解决问题的内容。我有一个填充数据表的数据库。我现在正尝试添加新列,并将列行的值设置为等于1或0,具体取决于下面的小公式:

dt.Columns.Add("pViolation");

foreach (DataRow row in dt.Rows)
{
    /*exception thrown here*/ if (Convert.ToDecimal(row["oPrice"]) < Convert.ToDecimal(row["pPrice"]))
    {
        row["pViolation"] = 1;
    }
    else
    {
        row["pViolation"] = 0;
    }
}

我一直收到此错误:

System.InvalidCastException:'无法将对象从DBNull强制转换为其他类型。'

oPricepPrice列已经为每列填充了十进制值,因此我没有将它们从null强制转换为十进制。有人可以告诉我我在做什么错吗?

c# datatable dbnull
1个回答
1
投票

引发异常,因为row["oPrice"]row["pPrice"]在数据库中为空。

您可以先检查null,但需要决定如何处理null值:

// check if either value is null
if (row["oPrice"] == DBNull.Value || row["pPrice"] == DBNull.Value)
{
    // what do you want to do when one value (or both values) is null?
}
else if (Convert.ToDecimal(row["oPrice"]) < Convert.ToDecimal(row["pPrice"]))
{
    row["pViolation"] = 1;
}
else
{
    row["pViolation"] = 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.