我目前正在做一个C#项目,将导出MySQL数据。导出是针对服务器中的任何数据库的,因此我不知道表中有哪些字段和数据类型,也不知道表中的字段是否允许空值。
在测试过程中,我发现导出工作正常,但如果字段允许null,当mysql数据读取器到达为null的行时,它会显示错误SqlNullValueException,data is null。
我试过做if (reader.getString(field) == null) {}
,但它仍然显示错误。
如何科普数据库中的Null值。
谢谢你能提供的任何帮助。
7条答案
按热度按时间lnxxn5zx1#
你需要在读取器中显式地测试null,所以:
iq3niunx2#
在这篇博客文章中有一个很好的扩展方法给读者
SQL Data Reader - handling Null column values
我将其更改为IDataReader接口
qlzsbp2j3#
.Net不使用
null
文字来区分数据库空值。我只能推测,但我怀疑这是因为许多常见的数据库列类型(int,float等)都是值类型,将值类型与null进行比较根本不会像您期望的那样工作。相反,检查
DBNull.Value
或使用.IsDbNull()
函数。alen0pnh4#
我在允许空值的字段上使用GetString()方法时遇到了问题。我通过做一些类似的事情来解决这个问题:
reader[0].ToString()
gopyfrb35#
你总是可以使用C#条件运算符'?就像这样。。
xzlaal3s6#
您可以将从NULL字段检索的对象与DBNull.Value进行比较。
ercv8c1e7#
扩展@Summer-Time答案以包含int列: