C # içindeki bigint eşdeğeri nedir?


209

SQL Server veritabanı için bigint olan bir değer C # işlerken ne kullanmalıyım?

Yanıtlar:


354

Bu , 64 bitlik bir tam sayı olan uzun (veya Int64 ) değerine karşılık gelir .

Veritabanındaki sayı yeterince küçük olsa ve yanlışlıkla bir Int32 vb. Kullanıyorsanız, iyi olacaksınız. Ancak Int64 bunu kesinlikle tutacaktır.

Ve daha küçük bir şey kullanırsanız ve tam boy gerekiyorsa aldığınız hata? Bir yığın taşması! Yaşasın!


100
Tamsayı taşması olmadığından emin misiniz?
luqui

6
Daha fazla veri türü için iyi referans: msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx
MacGyver

3
C # long'da büyük harf kullanılmaz.
Shawn Kovac

datetime dönüştürmek için uzun?
Kiquenet

60

Int64ile doğrudan eşleşir BigInt.

Kaynak


3
Int64 için uzun başka bir isim /
Asad

11
Evet. longAnahtar kelime için bir diğer adıdır System.Int64.
Anon.

12

Sadece bir ekin birincil anahtarını döndüren ve bir

SELECT @@identity

bigint birincil anahtarımda ve uzun kullanarak bir döküm hatası alıyorum - bu yüzden bu aramayı başlattım. En azından benim durumumda doğru cevap, bu seçim tarafından döndürülen türün ondalık türe eşit NUMERIC olmasıdır. Uzun bir süre kullanılması, bir istisna oluşturur.

Yanıtlarınızı birden fazla Google aramasında (hatta Stack Overflow'da bile) kontrol etmenin bir nedeni budur.

Bana yardımcı olan bir veritabanı yöneticisine teklif vermek için:

... BigInt, ne kadar çok göründükleri önemli değil, INT64 ile aynı değil. Bunun nedeni, SQL'in Int / BigInt'i normal işlemenin bir parçası olarak sıklıkla Sayısal'a dönüştürmesidir. Bu nedenle, OLE veya .NET'e gittiğinde, gerekli dönüşüm INT için NUMERIC olur.

Yazdırılan değer aynı göründüğü için sık sık fark etmiyoruz. "


Sayısal ipucu için teşekkürler .. sadece bana büyük zaman yardımcı oldu!
20'de jpshook

8
BigInt PK'niz bir C # Int64'e sığmadığı için değil, SCOPE_IDENTITY ve @@ IDENTITY NUMERIC (38, 0) döndürdüğü için bir döküm hatası aldınız. Diğer bir deyişle, BigInt olan Int64 ile aynıdır, ancak BigInt SCOPE_IDENTITY aracılığıyla döndürülen değerleri olabilir veya @@ KİMLİK sayısal (38, 0) 'ye kadar dönüştürülmüş.
Dan Hermann

Teşekkürler Dan. FYI, hala SQL Azure (RTM) ile oluyor - 12.0.2000.8 & .NET v 4.5
Gunnar


6

Sen kullanabilirsiniz longtürünü veyaInt64



1

int SQL doğrudan eşleşir int32 da basit tür, yani olarak bilinen int içinde C # oysa

Bigint Sql Server doğrudan eşler Int64 yani aynı zamanda ilkel bir tür olarak biliyor uzun yılında C #

Burada tamsayıya tamsayı tanımlanmışsa açık bir dönüşüm



0

veritabanı tablonuzda bigint kullanıyorsanız , C # 'da Uzun kullanabilirsiniz


-3

Ben bir DataGridView gösterilecek bir bigint veri türü idare ediyordu ve böyle yaptı

something = (int)(Int64)data_reader[0];
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.