2009-08-29 19 views

答えて

12

ここには3つの一般的なアプローチがあります。あなたが話している場合(あなたはデータリーダーからそれをフェッチとしておそらく)

  • についてobject、そしてDBNull.Valueはnullを表すことができます。私は
  • に起因して、.NET 1.1の歴史、DateTime.MinValueは一般nullとして解釈されているが、データ層のうち、これをできるようにする傾向がありません。魔法の数字かもしれませんが、ほとんどのデータバインディングなどで動作します。
  • in .NET 2.0、Nullable<T>は、DateTime?を使用できることを意味します。つまり、null可能なDateTimeです。ただDateTime?はどこ史上あなたがnullにすることができDateTime意味使用して、あなたはそれをnullまたは有効なDateTimeの値を与えることができます。

データ・アクセスおよびヌルのいくつかの他の思考:

  • をあなたは必見使用DBNull.Value、ないnullSqlCommandに渡す - データリーダーからの読み取り時
  • 下記参照、私はチェックする傾向があるreader.IsDbNull(ordinal)

コマンドのもの(例としてNullable<T>) ):

param.Value = when.HasValue ? (object)when.Value : DBNull.Value; 
+0

マーク、ありがとう。 – odiseh

3

使用DateTime?

あなたは具体的には、どのような問題を抱えていますか?

- それは明らかだちょうどそう、それはNullable DateTimeオブジェクトではなく、質問:)

DateTime? t = null; 

を編集する - ので、同じようにそれをチェックし、コメントへの対応

を編集します。

DateTime? theTime; 

if(table["TheColumn"] == DBNull.Value){ 
    theTime = null; 
} else { 
    theTime = (DateTime) table["TheColumn"]; 
} 
+0

DateTimeにオブジェクト(DataRowの列)をキャストできません。 – odiseh

+0

編集して返信しました。 'DBNull.Value'と等しいかどうかを確認するだけです。 –

+0

ああ、見つかりましたありがとうございました。 – odiseh

関連する問題