Jak obsługiwać w .NET null i przesłać go do bazy danych

15-maj-2013

SQL i inne bazy danych mają wartość NULL. Kiedy np pewna data jest nieznana, zapamiętujesz w niej NULL i już wiadomo, że data jest jeszcze nieokreślona. Rodzi się jednak problem jak tego nulla obsługiwać w aplikacjach w .NET.

Do typu DateTime nie można przypisać wartości null. Można za to wykorzystać typ DateTime? , który już przyjmuje wartość null.

Kiedy chcesz się odwołać do zmiennej x typu DateTime? musisz to zrobić tak:

if(x.HasValue)
{
   string s = x.Value.ToString()
}

Kiedy masz procedurę i chesz do niej przekazać NULL możesz skorzystać z DBNull.Value. Dzieje się tak dlatego, że null w .NET to trochę co innego niż NULL w bazie danych. Rzutowanie na typ object było potrzebne, aby pozbyć się komunikatu o niegodności typów:

myCommand.Parameters["@receivedDate"].Value =
            (r.ReceivedDate == null ? (object)DBNull.Value : r.ReceivedDate.Value);

Komentarze są wyłączone

Autor: Rafał Kraik