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

Tại sao hàm tạo tên / giá trị SqlParameter lại coi 0 là null?

Như đã nêu trong tài liệu cho phương thức khởi tạo đó:

Đơn giản là bạn đang gọi một hàm tạo khác với những gì bạn nghĩ trong trường hợp của mình.

Lý do cho điều này là C # cho phép một ẩn chuyển đổi từ chữ số nguyên 0 thành các kiểu enum (chỉ là các kiểu tích phân bên dưới) và sự chuyển đổi ngầm này gây ra (string, SqlDbType) hàm tạo để phù hợp hơn với độ phân giải quá tải so với chuyển đổi quyền anh cần thiết để chuyển đổi int đến object cho (string, object) phương thức khởi tạo.

Điều này sẽ không bao giờ là vấn đề khi bạn chuyển một int biến , ngay cả khi giá trị của biến đó là 0 (bởi vì nó không phải là một chữ số 0) hoặc bất kỳ biểu thức nào khác có kiểu int . Nó cũng sẽ không xảy ra nếu bạn truyền int một cách rõ ràng đến object như đã thấy ở trên, bởi vì khi đó chỉ có một quá tải phù hợp.



  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ại sao tôi nhận được Thủ tục mong đợi tham số '@statement' thuộc loại 'ntext / nchar / nvarchar'. khi tôi cố gắng sử dụng sp_executesql?

  2. Sử dụng TYPE_NAME () để lấy tên của loại dữ liệu trong SQL Server

  3. Nghiên cứu điển hình về nâng cấp phần cứng máy chủ cơ sở dữ liệu SQL Server

  4. Cách xác định giá trị cho các tháng bị thiếu dựa trên dữ liệu của các tháng trước trong T-SQL

  5. Nhiều chỉ mục so với nhiều cột