Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tốt nhất để đối phó với DBNull's là gì

Các loại không thể xóa là tốt, nhưng chỉ dành cho các loại không thể sử dụng để bắt đầu.

Để tạo một loại "nullable", hãy thêm dấu chấm hỏi vào loại, ví dụ:

int? value = 5;

Tôi cũng khuyên bạn nên sử dụng "as "từ khóa thay vì truyền. Bạn chỉ có thể sử dụng từ khóa" as "trên các loại có thể vô hiệu, vì vậy hãy đảm bảo rằng bạn đang truyền những thứ đã có thể vô hiệu (như chuỗi) hoặc bạn sử dụng các loại có thể sử dụng như đã đề cập ở trên. Lý do cho điều này là

  1. Nếu một loại là giá trị rỗng, thì "as "từ khóa trả về null nếu giá trị là DBNull .
  2. Nó nhanh hơn một chút so với truyền mặc dù chỉ trong một số trường hợp nhất định. Bản thân điều này không bao giờ là lý do đủ chính đáng để sử dụng as , nhưng cùng với lý do ở trên, nó rất hữu ích.

Tôi khuyên bạn nên làm điều gì đó như thế này

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

Trong trường hợp trên, nếu row trở lại dưới dạng DBNull , rồi đến giá trị value sẽ trở thành null thay vì ném một ngoại lệ. Lưu ý rằng nếu truy vấn DB của bạn thay đổi các cột / loại được trả về, hãy sử dụng as sẽ khiến mã của bạn bị lỗi một cách âm thầm và làm cho các giá trị trở nên đơn giản null thay vì ném ngoại lệ thích hợp khi dữ liệu không chính xác được trả về, vì vậy bạn nên có các thử nghiệm tại chỗ để xác thực các truy vấn của mình theo những cách khác để đảm bảo tính toàn vẹn của dữ liệu khi cơ sở mã của bạn phát triển.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm hiểu xem một đối tượng có phải là khóa ngoại với OBJECTPROPERTY () trong SQL Server hay không

  2. Làm cách nào để tạo một thủ tục được lưu trữ sẽ tùy chọn tìm kiếm các cột?

  3. Hiểu kích thước lưu trữ ‘datetimeoffset’ trong SQL Server

  4. Làm cách nào để tính tổng số đang chạy trong SQL mà không sử dụng con trỏ?

  5. Cách cài đặt SQL Server trên máy Mac