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?

Asad
sumber

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!

Patrick Karcher
sumber
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
60

Int64peta langsung ke BigInt.

Sumber

Kekacauan Kekacauan
sumber
3
adalah nama lama untuk Int64 /
Asad
11
Iya. Kata longkunci adalah alias untuk System.Int64.
Anon.
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. "

Robb Sadler
sumber
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

Gunakan tipe data yang panjang.

Otávio Décio
sumber
6

Anda bisa menggunakan longtipe atauInt64


sumber
2

Saya pikir yang setara adalah Int64

John Boker
sumber
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

Technacron
sumber
0

Untuk sebagian besar kasus itu panjang (int64) di c #

Rajeev Sirohi
sumber
0

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

Abbasibh
sumber
-3

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

something = (int)(Int64)data_reader[0];
Rúben
sumber