我使用 DataReader 读取我的数据库。
并且某些行没有 fdate 值。
所以当我将空日期转换为 DateTime 时,会发生错误。
如何检查字段是否为空?
AdsCommand cmd = conn.CreateCommand();
cmd.CommandText = "select name,fdate from abc";
AdsDataReader reader = cmd.ExecuteReader();
DateTime flsdate = (reader["fdate"].Equals(null))? Convert.ToDateTime(reader["fdate"]) : DateTime.Today;
我尝试使用 Equals,但它不起作用。
有人知道如何检查空对象以避免转换错误吗?
谢谢!
最佳答案
由于每个人都向您指出了如何解决该问题,我正在尝试向您提供有关 NULL 和 DBNull 之间的区别的信息。
null
和 DBNull 不同null
不是任何类型的实例。 DBNull 是一个单例类,只有一个实例:DBNull.Value
。null
表示无效引用,而DBNull.Value
表示数据库中不存在的值。DBNull.Value
是数据库提供商为表中不存在的值提供的内容。
在那个背景下 (reader["fdate"].Equals(null))
在这里使用是不正确的。您必须使用 DBNull.Value
检查它。如果它是 DBNull
类型,或者它等于 DBNull.Value
,则分配您喜欢的任何值。
关于C# 对象空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235570/