C# 空日期时间变量

C# 空日期时间变量,c#,sql,C#,Sql,我试图从SQL DB中读取一个字段,它是DateTimedatatype,但该值为NULL DateTime STime = NULL; C#的接收变量是 如果调用GetDateTime可以返回null,那么必须首先 调用此方法之前,请调用IsDBNull检查空值 如果IsDBNull返回true,则将StartTime设置为null 这是一种相当普遍的情况。我已经编写了扩展方法,以便更容易地处理此模式,例如: public static DateTime? GetDateTimeO

我试图从SQL DB中读取一个字段,它是
DateTime
datatype,但该值为NULL

DateTime STime = NULL;
C#的接收变量是


如果调用
GetDateTime
可以返回null,那么必须首先

调用此方法之前,请调用IsDBNull检查空值

如果IsDBNull返回true,则将StartTime设置为null

这是一种相当普遍的情况。我已经编写了扩展方法,以便更容易地处理此模式,例如:

    public static DateTime? GetDateTimeOrNull(this IDataReader reader, int ordinal)
    {
        return reader.IsDBNull(ordinal) ? null : (DateTime?)reader.GetDateTime(ordinal);
    }
如果您的项目中有该扩展方法,您将更改

StartTime = reader.GetDateTime(7);


另外,我建议不要对序号使用硬编码数字。相反,在开始循环读卡器之前,请执行类似于
intidxts=reader.GetOrdinal(“TheTSColumn”)StartTime=reader.GetDateTimeOrNull(idxTS)。这可以保护您的代码免受更改,例如从查询中添加/删除列。

如果对
GetDateTime
的调用可以返回null,则必须首先

调用此方法之前,请调用IsDBNull检查空值

如果IsDBNull返回true,则将StartTime设置为null

这是一种相当普遍的情况。我已经编写了扩展方法,以便更容易地处理此模式,例如:

    public static DateTime? GetDateTimeOrNull(this IDataReader reader, int ordinal)
    {
        return reader.IsDBNull(ordinal) ? null : (DateTime?)reader.GetDateTime(ordinal);
    }
如果您的项目中有该扩展方法,您将更改

StartTime = reader.GetDateTime(7);


另外,我建议不要对序号使用硬编码数字。相反,在开始循环读卡器之前,请执行类似于
intidxts=reader.GetOrdinal(“TheTSColumn”)StartTime=reader.GetDateTimeOrNull(idxTS)。这可以保护您的代码不受更改,例如从查询中添加/删除列。

您的意思是说,我需要将可空的StartTime设置为DateTime?StartTime?你的意思是说,我需要将可空的StartTime转换为DateTime?开始时间?当你尝试阅读时会发生什么?当你尝试阅读时会发生什么?
StartTime = reader.GetDateTimeOrNull(7);