2

VS2008 DataSet を使用してデータベースに接続しています。データベース内のテーブルの 1 つに、NULL を許可する DateTime 列が含まれています (つまり、タイプ: DateTime?)

MSDNデータセットは、次のように明確に述べています。

Nullable または Nullable 構造は、DataSet では現在サポートされていません。

ただし、 TableAdaptersの MSDN サイトでは、TableAdaters が Nullable 型をサポートできると述べています。

TableAdapters は、null 許容型の Nullable(Of T) および T? をサポートしています。null 許容型の詳細については ... C# での null 許容型の詳細については、「 Null 許容型の使用 (C# プログラミング ガイド)」を参照してください。

よくわかりません!

DataSet デザイナで、問題のある列のプロパティを「AllowDBNull=True」に設定しましたが、null の DateTime (SELECT * FROM UDF) を返す TableAdapter クエリを実行するたびに、次の例外が発生します: "ArguementOutOfRangeException: Year, Month, and Dayパラメータは、表現できない DateTime を記述しています。」

私が持っていた 1 つのアイデアは、列の型を System.Object に変更して null 値を正しく処理し、自分のコードで変換を行うことでしたが、それでも同じ例外が発生します。

この質問は、クエリが返された後にヌルを処理する方法を示唆していますが、クエリを返すことはできません。

データベース内の null を処理できるテーブルでクエリを実行できるように、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 に答える