sql >> Database >  >> RDS >> Sqlserver

Wat is de beste manier om met DBNull's om te gaan?

Nullable-typen zijn goed, maar alleen voor typen die om te beginnen niet nullable zijn.

Om een ​​type "nullable" te maken, voeg je een vraagteken toe aan het type, bijvoorbeeld:

int? value = 5;

Ik zou ook aanraden om de "as " trefwoord in plaats van casten. Je kunt het trefwoord "as" alleen gebruiken voor nullable-typen, dus zorg ervoor dat je dingen cast die al nullable zijn (zoals strings) of je gebruikt nullable-typen zoals hierboven vermeld. De reden hiervoor is

  1. Als een type nullable is, wordt de "as " zoekwoord retourneert null als een waarde DBNull . is .
  2. Het is iets sneller dan casten, maar alleen in bepaalde gevallen. Dit op zichzelf is nooit een goede reden om as . te gebruiken , maar in combinatie met de bovenstaande reden is het handig.

Ik zou aanraden om zoiets te doen

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

In het bovenstaande geval, als row komt terug als DBNull , dan value wordt null in plaats van een uitzondering te gooien. Houd er rekening mee dat als uw DB-query de kolommen/typen verandert die worden geretourneerd, met behulp van as zal ervoor zorgen dat uw code stil faalt en maak waarden eenvoudig null in plaats van de juiste uitzondering te genereren wanneer onjuiste gegevens worden geretourneerd, wordt het aanbevolen dat u tests uitvoert om uw zoekopdrachten op andere manieren te valideren om de gegevensintegriteit te waarborgen naarmate uw codebase zich ontwikkelt.



  1. Hoe in Java verbinding te maken als SYS met Oracle?

  2. Wat is een berekende kolom in SQL Server?

  3. Geen geschikt stuurprogramma gevonden voor 'jdbc:mysql://localhost:3306/mysql

  4. Kan ik een UNIQUE-beperking aan een PostgreSQL-tabel toevoegen nadat deze al is gemaakt?