VB.NET OLEDBDataReader - 结果集中的空值(DATETIME)

时间:2013-12-11 23:15:48

标签: oracle datetime null oledbdatareader

我是VB.NET编程的新手,所以非常感谢指向示例。

我有一个到Oracle 11g数据库的OleDB连接。我正在从表中读取一行并尝试填充行对象(mClockInOutInfo)。我遇到的问题是返回的行中有一个null DateTime(timestamp)列。

当然,我从mClockInOutInfo.RowDate = dr.GetDateTime(0)开始(假设RowDate列是查询中的第一列)。

我很快发现应该检查空值,所以我将= If(IsDBNull(dr.GetDateTime(0)),DBNull.value,dr.getDateTime(0))添加到代码中。 (我现在使用在这里找到的NullSafeString函数。但DateTime类型没有。我试图创建一个,没有成功。所以我仍然使用我的datetime列的If(IsDbNull(...))代码

我遇到的问题是我收到错误:“指定的演员表无效。”在评估该陈述时。我已经使用.GetDataTypeName(0)方法验证了列类型。它返回DBTYPE_DBTIMESTAMP。我已经查看了架构信息,以验证该列实际上是我正在寻找的信息。据我所知,在评估if()语句的IsDBNull(drRecent.GetDateTime(0))部分时会产生错误。我通过将语句分成多行if语句来证实这一点: if IsDBNull(dr.GetDateTime(0))然后 ... 其他 ... 结束如果

我得到了if IsDBNull(...)行抛出的相同的强制转换错误。

所以,我回到了SQL字符串,并在列中显示了Coalesce,其中包含空数据。我收到了同样的施法错误。最后,感到沮丧的是,我更改了sql查询以使用TO_DATE函数,并使用适当的格式参数输入日期字符串。我仍然收到同样的施法错误。

mClockInOutInfo中的属性定义为DateTime。还有其他列以完全相同的方式定义,并且表中包含数据的列没有给出任何错误。

当数据库允许DateTime(Timestamp)列中的空值时,我应该做些什么?欢迎所有想法。提前谢谢。

0 个答案:

没有答案