c#中的格式异常

本文关键字:异常 格式 | 更新日期: 2023-09-27 18:04:40

大家好!

我想听听你的意见或建议。

我得到了这个错误:对象不能从DBNull转换为其他类型,但它访问或引用的字段不具有空值。怎么可能呢?

下面是这段代码:

int pregnant = Convert.ToInt32((dtRw)["pregnant"]);

c#中的格式异常

DBNull和null是不同的。虽然null不是任何类型的实例,但System.DbNull. value是System.DbNull的一个实例。在null和System.DBNull.Value之间的区别是什么?

下面的代码将失败

if ((dtRw)["pregnant"] != null)
   int pregnant = Convert.ToInt32((dtRw)["pregnant"]);

但这将正常工作

if (!(dtRw)["pregnant"] is DBNull)
   int pregnant = Convert.ToInt32((dtRw)["pregnant"]);

如果你使用MySqlDataReader,那么有IsDBNull方法可以检查列是否包含不存在或缺失的值。

if(dtRw.IsDBNull("pregnant")) {
   int pregnant = Convert.ToInt32((dtRw)["pregnant"]);