2009-08-29 5 views

Odpowiedz

12

Dostępne są 3 wspólne podejścia;

  • jeśli mówimy o object (być może, jak sprowadzić go z czytnika danych), a następnie DBNull.Value może reprezentować wartość null. Nie mam tendencji do wypuszczania tego z warstwy danych, ale ze względu na historię .NET 1.1, DateTime.MinValue jest powszechnie interpretowany jako ; magiczna liczba, może - ale działa i jest obsługiwana przez większość danych wiążących itp.
  • w .NET 2.0, Nullable<T> oznacza, że ​​można użyć DateTime? - tj. nullable-of-DateTime; po prostu użyj DateTime?, gdzie zawsze masz na myśli DateTime, która może być pusta, i możesz nadać mu wartość null lub prawidłową DateTime.

Niektóre inne przemyślenia na temat dostępu do danych i wartości null:

  • gdy przechodzi do SqlCommand ty koniecznością użytku DBNull.Value nie null - patrz niżej
  • podczas czytania z danych czytnika, Mam tendencję do sprawdzania reader.IsDbNull(ordinal)

rzeczy polecenia (z Nullable<T> jako przykład):

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

Mark, wielkie dzięki. – odiseh

3

Zastosowanie DateTime?

Jaki problem należy rozwiązać, a konkretnie?

- Edycja

Tak więc jasne jest, że to Nullable DateTime obiektu, a nie pytanie :)

DateTime? t = null; 

- Edycja

Odpowiadając na komentarz, sprawdź to w taki sposób:

DateTime? theTime; 

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

Nie mogę rzutować obiektu (kolumna DataRow) na DateTime. – odiseh

+0

Odpowiedziala za pośrednictwem edycji. Musisz tylko sprawdzić, czy jest równa "DBNull.Value". –

+0

Och, znalazłem to Dziękuję. – odiseh

Powiązane problemy