Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какъв е най-добрият начин да се справите с DBNull

Типовете с нулеви стойности са добри, но само за типове, които не могат да бъдат обнулявани в началото.

За да направите тип „с нулеви стойности“, добавете въпросителен знак към типа, например:

int? value = 5;

Бих препоръчал също да използвате „as " ключова дума вместо прехвърляне. Можете да използвате ключовата дума "as" само за нулеви типове, така че се уверете, че предавате неща, които вече са нулирани (като низове) или използвате типове с нула, както е споменато по-горе. Причината за това е

  1. Ако типът може да бъде нула, „as " ключова дума връща null ако стойността е DBNull .
  2. Това е много-малко по-бързо от кастинга, но само в определени случаи. Това само по себе си никога не е достатъчно добра причина да използвате as , но заедно с причината по-горе е полезно.

Бих препоръчал да направите нещо подобно

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

В горния случай, ако row се връща като DBNull , след това value ще стане null вместо да хвърлят изключение. Имайте предвид, че ако вашата DB заявка промени връщаните колони/типове, използвайки as ще доведе до безшумен отказ на кода ви и направете стойностите прости null вместо да хвърляте подходящото изключение, когато се връщат неправилни данни, така че се препоръчва да имате тестове, за да потвърдите заявките си по други начини, за да гарантирате целостта на данните с развитието на вашата кодова база.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оптимизиран SQL за дървовидни структури

  2. Има ли някакви недостатъци винаги да използвате nvarchar(MAX)?

  3. Индексите на SQL Server - нарастващи или низходящи, каква разлика има?

  4. Свързване на Bastion сървър към PostgreSQL сървър чрез SSH тунел

  5. Как работи @@MAX_CONNECTIONS в SQL Server