向数据表添加新列时出现 DBNull 错误
DBNull Error when adding new column to a datatable
我知道已经有很多关于此的帖子,但我没有找到任何可以帮助我理解或解决我的问题的帖子。我有一个填充数据表的数据库。我现在尝试添加一个新列并将列行的值设置为 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: 'Object cannot be cast from DBNull to
other types.'
列 oPrice
和 pPrice
已经为每一列填充了十进制值,因此我不会将它们从 null 转换为小数。有人可以告诉我我做错了什么吗?
它抛出异常,因为 row["oPrice"]
或 row["pPrice"]
在数据库中为空。
您可以先检查空值,但您需要决定如何处理空值:
// 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;
}
我知道已经有很多关于此的帖子,但我没有找到任何可以帮助我理解或解决我的问题的帖子。我有一个填充数据表的数据库。我现在尝试添加一个新列并将列行的值设置为 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: 'Object cannot be cast from DBNull to other types.'
列 oPrice
和 pPrice
已经为每一列填充了十进制值,因此我不会将它们从 null 转换为小数。有人可以告诉我我做错了什么吗?
它抛出异常,因为 row["oPrice"]
或 row["pPrice"]
在数据库中为空。
您可以先检查空值,但您需要决定如何处理空值:
// 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;
}