C#Object null检查

Exp*_* be 8 .net c# sql asp.net datareader

我使用DataReader读取了我的数据库.

并且某些行没有fdate值.

因此,当我将null日期转换为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;
Run Code Online (Sandbox Code Playgroud)

我尝试使用Equals,但它不起作用.

有谁知道如何检查null对象以避免转换错误?

谢谢!

San*_*eep 11

当大家指出如何解决问题时,我试图向您提供有关NULL和DBNull之间区别的信息.

  • null 和DBNull是不同的.

  • null不是任何类型的实例.DBNull是一个包含一个实例的单例类:DBNull.Value.

  • null表示无效引用,其中as DBNull.Value表示DB中不存在的值.

  • DBNull.Value 数据库提供程序为表中的不存在的值提供了什么.

这个背景(reader["fdate"].Equals(null))在这里使用是不正确的.你必须检查它DBNull.Value.如果它是类型DBNull,或者它是等于DBNull.Value,那么分配你喜欢的任何值.

  • +1实际解释的东西.我冒昧地编辑了一下; 请回滚您不同意的任何更改. (3认同)