2

我正在使用 VS2008 数据集连接到数据库。数据库中的一个表包含一个允许空值的日期时间列(即类型:日期时间?)

MSDN数据集明确指出:

DataSet 目前不支持 Nullable 或 Nullable 结构。

然而,在 TableAdapters 的 MSDN 站点上,TableAdaters可以支持 Nullable 类型:

TableAdapter 支持可为空的类型 Nullable(Of T) 和 T?。有关可空类型的更多信息...有关 C# 中可空类型的更多信息,请参阅使用可空类型(C# 编程指南)。

我很困惑!

在数据集设计器中,我已将违规列的属性设置为“AllowDBNull=True”,但每当我运行返回空 DateTime (SELECT * FROM UDF) 的 TableAdapter 查询时,我都会收到以下异常:“ArguementOutOfRangeException:年、月和日参数描述了一个不可表示的日期时间。”

我的一个想法是将 Column 的类型更改为 System.Object 以正确处理空值,然后我可以在自己的代码中进行转换,但是,我仍然会引发相同的异常。

This question建议一旦查询返回,如何处理空值,但是我无法让查询返回。

如何修改 TableAdapter 和/或 Dataset 以允许我在可以处理数据库中的空值的表上运行查询?

4

1 回答 1

0

我找到的解决方案是使用 TO_CHAR() Oracle 函数并告诉表适配器期待一个字符串值

SELECT to_char(NULL_DATE_FIELD,'dd/mm/yyyy HH24:MI:SS') FROM *

这意味着在使用代码中需要进行一些转换。虽然不理想!

于 2010-12-08T14:40:00.760 回答