Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengapa konstruktor nama/nilai SqlParameter memperlakukan 0 sebagai nol?

Sebagaimana dinyatakan dalam dokumentasi untuk konstruktor itu:

Anda hanya memanggil konstruktor yang berbeda dari yang Anda kira dalam kasus Anda.

Alasan untuk ini adalah bahwa C# mengizinkan implisit konversi dari literal integer 0 ke tipe enum (yang merupakan tipe integral di bawahnya), dan konversi implisit ini menyebabkan (string, SqlDbType) konstruktor agar lebih cocok untuk resolusi kelebihan beban daripada konversi tinju yang diperlukan untuk mengonversi int untuk object untuk (string, object) konstruktor.

Ini tidak akan menjadi masalah ketika Anda memberikan int variabel , meskipun nilai variabel tersebut adalah 0 (karena bukan literal nol), atau ekspresi lain yang memiliki tipe int . Itu juga tidak akan terjadi jika Anda secara eksplisit melemparkan int untuk object seperti yang terlihat di atas, karena hanya ada satu kelebihan yang cocok.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus semua spasi dari string di SQL Server

  2. Hitung hash MD5 dari string UTF8

  3. Tabel Periksa SQL Server Dipartisi

  4. Temukan Nilai Non-Numerik dalam Kolom di SQL Server

  5. Sintaks salah di dekat ')' memanggil prosedur tersimpan dengan GETDATE