我知道已经有很多关于此的帖子,但是我没有找到任何有助于我理解或解决问题的内容。我有一个填充数据表的数据库。我现在正尝试添加新列,并将列行的值设置为等于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强制转换为其他类型。'
oPrice
和pPrice
列已经为每列填充了十进制值,因此我没有将它们从null强制转换为十进制。有人可以告诉我我在做什么错吗?
引发异常,因为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;
}