对象不能使用DBNull从DBNull强制转换为其他类型.价值吗?转换

本文关键字:转换 DBNull 其他 类型 不能 对象 | 更新日期: 2023-09-27 17:50:11

我正试图从数据库中读取值,我知道在我现在正在寻找的标准中为空。所以我有了检验它的方法:ld.Percentage = reader["DataWin3Data"] != DBNull.Value ? Convert.ToDouble(reader["DataWin3Data"]) : double.MinValue;我以前在一个字段可以为空的地方使用过它,它没有问题。我不完全确定在这种情况下该怎么做,如何解决它。我在下面包含了我的相关代码。如何改变我正在做什么,目前没有这个错误,当有一个空值?

ld.Percentage = reader["DataWin3Data"] != DBNull.Value ? Convert.ToDouble(reader["DataWin3Data"]) : double.MinValue;
ld.TotalCases = reader["DataWin8Data"] != DBNull.Value ? Convert.ToInt32(reader["DataWin8Data"]) : int.MinValue;
ld.TotalPercentage = reader["DataWin7Data"] != DBNull.Value ? Convert.ToDouble(reader["DataWin7Data"]) : double.MinValue;

对象不能使用DBNull从DBNull强制转换为其他类型.价值吗?转换

这个怎么样?

ld.Percentage = reader["DataWin3Data"] == DBNull.Value 
                ? double.MinValue : (double)reader["DataWin3Data"];
我已经多次使用这样的代码,没有问题。您确定您总是读取同样检查空值的字段吗?

另外,当您不实际转换时不要使用Convert。这应该是强制转换(就像我的例子)。

如果这不起作用,可能是您对数据做了一些奇怪的事情。也许正在进行一些连载?试试这个:

ld.Percentage = reader["DataWin3Data"] is DBNull 
                ? double.MinValue : (double)reader["DataWin3Data"];
相关文章: