Avatar billede 2c Nybegynder
22. april 2006 - 21:58 Der er 9 kommentarer og
1 løsning

Håndtering af DateTime som null værdi til database

Hej,
Jeg har en webapplikation skrevet i ASP.NET med C#(2.0). I webapplikationen  skal man blandt andet kunne redigere en tabel med 3 DateTime koloner. På webserveren kører der nogen applikationer der benytter sig af disse ”Dates”. Hvis de er Null ignorer de dem, ellers bruger de dem.

Mit spørgsmål er: Hvordan er det lettest at håndtere DateTime’s som kan være null, og skal skrives til en database? Man kan jo ikke sætte dem til null.

Jeg kan godt se at spørgsmålet virker lidt kryptisk, men bare nogen pointers til hvad der er best practice vil være rart.
Avatar billede arne_v Ekspert
22. april 2006 - 22:06 #1
når nu du bruger C# 2.0 så kan du vel bruge

DateTime?

som kan være null !
Avatar billede 2c Nybegynder
22. april 2006 - 22:44 #2
Jeg bruger DateTime, og jeg ville ønske jeg kunne sætte den til null. Men hvis jeg sætter en lig null får jeg en compiler fejl. Som default har de værdien 1/1 - 0001 klokken 12.
Avatar billede arne_v Ekspert
22. april 2006 - 22:47 #3
DateTime a = null;

giver fejl, men

DateTime? b = null;

bør virke
Avatar billede 2c Nybegynder
22. april 2006 - 22:55 #4
Umidelbart ser det ud til at virke fint.
Nu kommer jeg nok til at lyde lidt dum, men hvad gør tegnet "?" ?
Avatar billede arne_v Ekspert
22. april 2006 - 23:05 #5
det er en C# 2.0 feature - hvis du tager en type xxx så vil typen xxx? kunne tage
værdien null men ellers opføre sig som xxx

du kan også bruge int?
Avatar billede 2c Nybegynder
22. april 2006 - 23:05 #6
Fandt ud af det.
hmm, Måske er det en dum ide at side og kode en lørdag aften sammen med en kold øl :-)

Men tak for hjælpen. Smid et svar.
Avatar billede arne_v Ekspert
22. april 2006 - 23:15 #7
svar
Avatar billede snepnet Nybegynder
23. april 2006 - 16:16 #8
int? giver dig en Nullable<int> og en DateTime? giver dig en Nullable<DateTime> - så det er bare en shortcut til en generisk type, som du kunne have lavet direkte selv:

Nullable<int> nullableInt = null;
if(nullableInt.HasValue)
{
  int i = nullableInt.Value;
}

mvh
Avatar billede 2c Nybegynder
23. april 2006 - 16:47 #9
Ok. Smart nok.
Avatar billede arne_v Ekspert
23. april 2006 - 23:19 #10
Den eksplicitte variant er vel mest relevant for VB.NET som ikke har indbygget syntax for det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester