Apa yang setara dengan bigint di C #?


209

Apa yang seharusnya saya gunakan ketika menangani nilai dalam C #, yang merupakan bigint untuk database SQL Server?

Jawaban:


354

Itu sesuai dengan panjang (atau Int64 ), integer 64-bit.

Meskipun jika angka dari basis data cukup kecil, dan Anda secara tidak sengaja menggunakan Int32, dll., Anda akan baik-baik saja. Tapi Int64 pasti akan menahannya.

Dan kesalahan yang Anda dapatkan jika Anda menggunakan sesuatu yang lebih kecil dan ukuran penuh diperlukan? Tumpukan meluap! Yay!


100
Yakin itu bukan integer overflow?
luqui

6
Referensi yang baik untuk tipe data lebih lanjut: msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx
MacGyver

3
dalam C #, longtidak dikapitalisasi.
Shawn Kovac

mengkonversi datetime menjadi lama?
Kiquenet


12

Saya baru saja memiliki skrip yang mengembalikan kunci utama dari sebuah insert dan menggunakan a

SELECT @@identity

pada kunci utama bigint saya, dan saya mendapatkan kesalahan pemeran panjang - itu sebabnya saya memulai pencarian ini. Jawaban yang benar setidaknya dalam kasus saya adalah bahwa jenis yang dikembalikan oleh yang pilih adalah NUMERIC yang sama dengan jenis desimal. Menggunakan panjang akan menyebabkan pengecualian pemain.

Ini adalah salah satu alasan untuk memeriksa jawaban Anda di lebih dari satu pencarian Google (atau bahkan di Stack Overflow!).

Mengutip administrator database yang membantu saya:

... BigInt tidak sama dengan INT64 tidak peduli seberapa mirip mereka. Sebagian alasannya adalah bahwa SQL akan sering mengonversi Int / BigInt ke Numeric sebagai bagian dari pemrosesan normal. Jadi ketika masuk ke OLE atau .NET konversi yang diperlukan adalah NUMERIC ke INT.

Kami tidak sering memperhatikan karena nilai cetakannya terlihat sama. "


Terima kasih atas tip numeriknya .. hanya membantu saya keluar waktu besar!
jpshook

8
Anda mendapat galat karena SCOPE_IDENTITY dan @@ IDENTITY mengembalikan NUMERIC (38, 0), bukan karena BigInt PK Anda tidak cocok dengan C # Int64. Dengan kata lain, BigInt adalah sama seperti Int64, tapi BigInt nilai-nilai kembali melalui SCOPE_IDENTITY atau @@ IDENTITAS mungkin up-dikonversi ke NUMERIC (38, 0).
Dan Hermann

Terima kasih Dan. FYI, masih terjadi dengan SQL Azure (RTM) - 12.0.2000.8 & .NET v 4.5
Gunnar


6

Anda bisa menggunakan longtipe atauInt64



1

int dalam peta sql langsung ke int32 juga dikenal sebagai tipe primitif yaitu int dalam C # sedangkan

bigint di Sql Server memetakan langsung ke int64 juga dikenal sebagai tipe primitif yaitu panjang dalam C #

Konversi eksplisit jika biginteger ke integer telah ditentukan di sini



0

jika Anda menggunakan bigint di tabel database Anda, Anda bisa menggunakan Long in C #


-3

Saya sedang menangani tipe data bigint untuk ditampilkan dalam DataGridView dan membuatnya seperti ini

something = (int)(Int64)data_reader[0];
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.