C# 对象空检查

标签 c# asp.net .net sql datareader

我使用 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/

相关文章:

c# - 元组有什么用处?

c# - 前置 "\\?\"不适用于处理长路径

c# - 作为 AD 组发送电子邮件

c# - 在工作流 ("Cannot create an instance of "中删除 WCF 事件时出错 ...)

c# - MSDN 代码示例中缺少空格和换行符

c# - 在 .NET 中从 PDF 中读取文本

c# - ASP.NET MVC 3 Razor View 限制

javascript - jquery 日期选择器不适用于 ASP.NET 中的母版页

c# - 调用同一个 sql server 2005 存储过程的多个 asp.net 请求

.net - 团队成员之间的项目装配引用