1

我是 VB.NET 编程的新手,因此非常感谢您指出示例。

我有一个到 Oracle 11g 数据库的 OleDB 连接。我正在从表中读取单行并尝试填充行对象 (mClockInOutInfo)。我遇到的问题是返回的行中有一个空的 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)) Then ... Else ... End If

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

因此,我回到 SQL 字符串并在其中包含空数据的列上进行了合并。我收到了同样的演员错误。最后,很沮丧,我更改了 sql 查询以使用 TO_DATE 函数,并使用适当的格式参数输入日期字符串。我仍然收到同样的演员错误。

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

当数据库允许 DateTime (Timestamp) 列中的空值时我应该做什么的任何想法?欢迎所有想法。先感谢您。

4

0 回答 0