c# (3.5) 使用 TableAdapters 将 null DateTime 值读取/写入数据库

发布于 2024-10-03 06:44:04 字数 1080 浏览 2 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅黛梨妆こ 2024-10-10 06:44:04

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

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

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

The solution I found was to use the TO_CHAR() Oracle function and tell the Table Adapter to expect a string value

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

This means that there is some conversion that needs to happen in the using code. Not ideal though!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文