sql >> Databáze >  >> RDS >> Sqlserver

Jaký je nejlepší způsob, jak se vypořádat s DBNull's

Typy s možnou hodnotou null jsou dobré, ale pouze pro typy, které pro začátek nelze použít.

Chcete-li, aby byl typ "nulovatelný", přidejte k typu otazník, například:

int? value = 5;

Také bych doporučil použít "as Klíčové slovo " místo přetypování. Klíčové slovo "as" můžete použít pouze u typů s povolenou hodnotou null, takže se ujistěte, že přetypováváte věci, které již mohou být povoleny (např. řetězce), nebo používáte typy s povolenou hodnotou null, jak je uvedeno výše. Důvodem je

  1. Pokud je u typu povolena hodnota null, „as " klíčové slovo vrací null pokud je hodnota DBNull .
  2. Je to o něco rychlejší než odesílání, i když jen v některých případech. To samo o sobě není nikdy dost dobrý důvod pro použití as , ale ve spojení s výše uvedeným důvodem je to užitečné.

Doporučil bych udělat něco takového

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

V případě výše, pokud row vrátí se jako DBNull a poté value bude null místo vyvolání výjimky. Uvědomte si, že pokud váš dotaz DB změní vracené sloupce/typy, pomocí as způsobí, že váš kód tiše selže a zjednodušit hodnoty null namísto vyvolání příslušné výjimky, když jsou vrácena nesprávná data, se proto doporučuje, abyste zavedli testy pro ověření vašich dotazů jinými způsoby, abyste zajistili integritu dat, jak se vaše kódová základna vyvíjí.



  1. Jak funguje UTC_TIME() v MariaDB

  2. Importujte soubory XML do PostgreSQL

  3. Vložte pole do databáze MySQL pomocí PHP

  4. Spuštění SQL skriptu přes psql dává syntaktické chyby, které se v PgAdmin nevyskytují