sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är det bästa sättet att hantera DBNull's

Nullbara typer är bra, men bara för typer som inte är nullbara till att börja med.

För att göra en typ "nullbar" lägg till ett frågetecken till typen, till exempel:

int? value = 5;

Jag skulle också rekommendera att använda "as " nyckelord istället för casting. Du kan bara använda nyckelordet "som" på nullbara typer, så se till att du castar saker som redan är nullbara (som strängar) eller så använder du nullbara typer som nämnts ovan. Resonemationen för detta är

  1. Om en typ är nullbar visas "as " nyckelord returnerar null om ett värde är DBNull .
  2. Det går lite snabbare än att kasta men bara i vissa fall. Detta i sig är aldrig en tillräckligt bra anledning att använda as , men tillsammans med anledningen ovan är det användbart.

Jag skulle rekommendera att du gör något liknande

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

I fallet ovan, om row kommer tillbaka som DBNull , sedan value blir null istället för att göra ett undantag. Tänk på att om din DB-fråga ändrar kolumnerna/typerna som returneras, med as kommer att få din kod att tyst misslyckas och gör värden enkla null istället för att göra det lämpliga undantaget när felaktig data returneras, så det rekommenderas att du har tester på plats för att validera dina frågor på andra sätt för att säkerställa dataintegritet när din kodbas utvecklas.



  1. Hur LTRIM() fungerar i MariaDB

  2. Hur man designar en databasmodell för ett biobokningssystem

  3. Ansluter till PostgreSQL-databas genom SSH-tunnling i Python

  4. ODP.NET Oracle.ManagedDataAccess orsakar ORA-12537 nätverkssession slutet av filen