2013-05-23 9 views
13

Mam datetime Typ danych: dttmJak wstawić wartość null w bazie poprzez zapytania parametrycznego

Również typ pola bazy danych jest datatime

Teraz robie to:

if (dttm.HasValue) 
{ 
    cmd.Parameters.AddWithValue("@dtb", dttm); 
} 
else 
{ 
    // It should insert null value into database 
    // through cmd.Parameters.AddWithValue("@dtb", _____) 
} 

Jak można to się stało.

+3

z http: //msdn.microsof t.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx: Wartość do dodania. Użyj wartości DBNull.Value zamiast wartości NULL, aby wskazać wartość pustą. – a1ex07

Odpowiedz

16

Zastosowanie DBNull.Value

if (dttm.HasValue) 
{ 
    cmd.Parameters.AddWithValue("@dtb", dttm); 
} 
else 
{ 
    cmd.Parameters.AddWithValue("@dtb", DBNull.Value) 
} 
3

jeśli twoje pole zezwala na wartość pustą;

if (dttm.HasValue) 
{ 
    cmd.Parameters.AddWithValue("@dtb", dttm); 
} 
else 
{ 
    cmd.Parameters.AddWithValue("@dtb", DBNull.Value) 
} 
26

Można to zrobić za pomocą operatora null koalescencyjny: jeśli wartość dttm jest null DBNull.Value zostanie wstawiony w przeciwnym wypadku wartość będzie używana dttm

cmd.Parameters.AddWithValue("@dtb", dttm ?? (object) DBNull.Value); 

To wyeliminuje potrzebę jeśli statment

+1

Tak, to najczystsze podejście. Nie byłem całkowicie pewien żywotności rzutowania w drugim operandem operatora koalescencji zerowej, ale działa dobrze. –

Powiązane problemy