c#中的格式异常

时间:2014-05-23 08:06:12

标签: c# mysql

美好的一天,大家!

我想请求任何建议或建议..

我收到此错误:无法将对象从DBNull转换为其他类型,但它访问或引用的字段不具有空值。怎么会这样?

这是一段代码:

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

非常感谢你。

1 个答案:

答案 0 :(得分:2)

DBNull和null是不同的。虽然null不是任何类型的实例,但System.DbNull.Value是System.DbNull的实例。阅读更多What is the difference between null and 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"]);