sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er den bedste måde at håndtere DBNull's på

Nullbare typer er gode, men kun for typer, der ikke kan nulstilles til at begynde med.

For at gøre en type "nullbar" skal du tilføje et spørgsmålstegn til typen, for eksempel:

int? value = 5;

Jeg vil også anbefale at bruge "as " søgeord i stedet for casting. Du kan kun bruge søgeordet "som" på nullbare typer, så sørg for at du caster ting, der allerede er nullbare (som strenge), eller du bruger nullbare typer som nævnt ovenfor. Begrundelsen for dette er

  1. Hvis en type er nullbar, vises "as " søgeord returnerer null hvis en værdi er DBNull .
  2. Det er altid en smule hurtigere end at kaste, men kun i visse tilfælde. Dette i sig selv er aldrig en god nok grund til at bruge as , men sammen med årsagen ovenfor er det nyttigt.

Jeg vil anbefale at gøre noget som dette

DataRow row = ds.Tables[0].Rows[0];
string value = row as string;

I tilfældet ovenfor, hvis row kommer tilbage som DBNull , derefter value bliver null i stedet for at smide en undtagelse. Vær opmærksom på, at hvis din DB-forespørgsel ændrer de kolonner/typer, der returneres, brug as vil få din kode til lydløst at fejle og gør værdier enkle null i stedet for at kaste den passende undtagelse, når forkerte data returneres, så anbefales det, at du har test på plads for at validere dine forespørgsler på andre måder for at sikre dataintegritet, efterhånden som din kodebase udvikler sig.



  1. Hvordan grupperer jeg efter uge i MySQL?

  2. Multi-Cloud-implementering til MySQL-replikering

  3. Sådan opdaterer du rækker med en tilfældig dato

  4. Showplan-forbedringer til UDF'er