我使用VS2008 DataSet连接到数据库。数据库中的一个表包含一个允许空值的DateTime列(即Type:DateTime?)
MSDN Datasets明确声明:
DataSet目前不支持Nullable或Nullable结构。
但在TableAdapters的MSDN网站上,TableAdaters CAN支持Nullable类型:
TableAdapters支持可空类型Nullable(Of T)和T?。有关可空类型的更多信息...有关C#中可空类型的更多信息,请参阅使用可空类型(C#编程指南)。
我很困惑!
在DataSet Designer中我将违规列的属性设置为'AllowDBNull = True',但每当我运行返回null DateTime(SELECT * FROM UDF)的TableAdapter查询时,我都会遇到以下异常:“ArguementOutOfRangeException:年,月和日参数描述了无法表示的DateTime。“
我有一个想法是将Column的类型更改为System.Object以正确处理空值,然后我可以在我自己的代码中进行转换,但是,我仍然会得到相同的异常。
这个question建议在查询返回后如何处理空值,但是我无法让查询返回。
如何修改TableAdapter和/或数据集以允许我在Table上运行可以处理数据库中空值的查询?
答案 0 :(得分:0)
我找到的解决方案是使用TO_CHAR()Oracle函数并告诉表适配器期望字符串值
SELECT to_char(NULL_DATE_FIELD,'dd/mm/yyyy HH24:MI:SS') FROM *
这意味着在使用代码中需要进行一些转换。虽然不太理想!