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