c# (3.5) 使用 TableAdapters 将 null DateTime 值读取/写入数据库
我正在使用 VS2008 DataSets 连接到数据库。数据库中的表之一包含允许空值的日期时间列(即类型:日期时间?)
MSDN 数据集明确指出:
DataSet 目前不支持 Nullable 或 Nullable 结构。
然而,在 TableAdapters 的 MSDN 网站上,声明 TableAdaters 可以支持 Nullable 类型:
TableAdapter 支持可空类型 Nullable(Of T) 和 T?。有关可为 null 类型的详细信息...有关 C# 中可为 null 类型的详细信息,请参阅使用可为 null 类型(C# 编程指南)。
我很困惑!
在数据集设计器中,我已将有问题的列的属性设置为“AllowDBNull=True”,但每当我运行返回 null DateTime (SELECT * FROM UDF) 的 TableAdapter 查询时,我都会收到以下异常:"ArguementOutOfRangeException: Year, Month和 Day 参数描述了一个无法表示的 DateTime。”
我的一个想法是将列的类型更改为 System.Object 以正确处理空值,然后我可以在自己的代码中进行转换,但是,我仍然遇到同样的异常。
这个问题建议如何处理空值一次查询已返回,但是我无法让查询返回。
如何修改 TableAdapter 和/或数据集以允许我在可以处理数据库中空值的表上运行查询?
I am connecting to a database using VS2008 DataSets. One of the Tables within the database contains a DateTime Column that allows nulls (i.e. Type: DateTime?)
MSDN Datasets categorically states:
The Nullable or Nullable structure is not currently supported in the DataSet.
However on the MSDN site for TableAdapters states that TableAdaters CAN support Nullable Types:
The TableAdapters support nullable types Nullable(Of T) and T?. For more information on nullable types ... For more information on nullable types in C#, see Using Nullable Types (C# Programming Guide).
I'm confused!
In the DataSet Designer I have set the offending Column's property to 'AllowDBNull=True' but whenever I run a TableAdapter Query that returns a null DateTime (SELECT * FROM UDF) I get the following Exception: "ArguementOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime."
One idea I had was to change the type of the Column to System.Object to correctly handle the null values and then I can do the conversions in my own code, however, I still get the same exception being raised.
This question suggests how to deal with the nulls once the query has returned, however I can't get the query to return.
How can I modify the TableAdapter and/or Dataset to allow me to run a query on the Table that can deal with the nulls in the database?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到的解决方案是使用 TO_CHAR() Oracle 函数并告诉表适配器需要一个字符串值。
这意味着使用代码中需要进行一些转换。但并不理想!
The solution I found was to use the TO_CHAR() Oracle function and tell the Table Adapter to expect a string value
This means that there is some conversion that needs to happen in the using code. Not ideal though!