Was entspricht Bigint in C #?

209

Was soll ich verwenden, wenn ich einen Wert in C # verarbeite, was für eine SQL Server-Datenbank von großer Bedeutung ist?

Asad
quelle

Antworten:

354

Das entspricht der langen (oder Int64 ) 64-Bit-Ganzzahl.

Wenn die Nummer aus der Datenbank jedoch klein genug ist und Sie versehentlich einen Int32 usw. verwenden, ist alles in Ordnung. Aber der Int64 wird es definitiv halten.

Und der Fehler, den Sie erhalten, wenn Sie etwas kleineres verwenden und die volle Größe benötigt wird? Ein Stapelüberlauf! Yay!

Patrick Karcher
quelle
100
Sicher, es ist kein ganzzahliger Überlauf?
Luqui
6
Gute Referenz für weitere Datentypen: msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx
MacGyver
3
in C # longwird nicht großgeschrieben.
Shawn Kovac
datetime in long umwandeln?
Kiquenet
60

Int64Karten direkt zu BigInt.

Quelle

ChaosPandion
quelle
3
ist lange andere Name für Int64 /
Asad
11
Ja. Das longSchlüsselwort ist ein Alias ​​für System.Int64.
Anon.
12

Ich hatte gerade ein Skript, das den Primärschlüssel einer Einfügung zurückgab und a verwendete

SELECT @@identity

auf meinem bigint-Primärschlüssel, und ich erhalte einen Besetzungsfehler mit long - deshalb habe ich diese Suche gestartet. Die richtige Antwort ist zumindest in meinem Fall, dass der von dieser Auswahl zurückgegebene Typ NUMERIC ist, was einem Dezimaltyp entspricht. Die Verwendung eines Longs führt zu einer Cast-Ausnahme.

Dies ist ein Grund, Ihre Antworten in mehr als einer Google-Suche (oder sogar bei Stack Overflow!) Zu überprüfen.

So zitieren Sie einen Datenbankadministrator, der mir geholfen hat:

... BigInt ist nicht dasselbe wie INT64, egal wie sehr sie sich ähneln. Ein Grund dafür ist, dass SQL Int / BigInt im Rahmen der normalen Verarbeitung häufig in Numeric konvertiert. Wenn es also um OLE oder .NET geht, ist die erforderliche Konvertierung NUMERIC to INT.

Wir bemerken es nicht oft, da der gedruckte Wert gleich aussieht. "

Robb Sadler
quelle
Vielen Dank für den numerischen Tipp. Hat mir gerade sehr geholfen!
Jpshook
8
Sie haben einen Umwandlungsfehler erhalten, weil SCOPE_IDENTITY und @@ IDENTITY NUMERIC (38, 0) zurückgeben, nicht weil Ihre BigInt-PK nicht in ein C # Int64 passt. Mit anderen Worten, BigInt ist dasselbe wie Int64, aber BigInt-Werte, die über SCOPE_IDENTITY oder @@ IDENTITY zurückgegeben werden, können in NUMERIC (38, 0) hochkonvertiert werden.
Dan Hermann
Danke Dan. Zu Ihrer Information, immer noch mit SQL Azure (RTM) - 12.0.2000.8 & .NET v 4.5
Gunnar
6

Verwenden Sie einen langen Datentyp.

Otávio Décio
quelle
6

Sie können longTyp oder verwendenInt64


quelle
2

Ich denke, das Äquivalent ist Int64

John Boker
quelle
1

int in SQL - Karten direkt an int32 auch als Urtyp weiß also int in C # , während

bigint in SQL Server wird direkt auf int64 abgebildet und auch als primitiver Typ bezeichnet, dh long in C #

Hier wurde eine explizite Konvertierung definiert, wenn biginteger in integer definiert wurde

Technacron
quelle
0

In den meisten Fällen ist es in c # lang (int64)

Rajeev Sirohi
quelle
0

Wenn Sie bigint in Ihrer Datenbanktabelle verwenden, können Sie Long in C # verwenden

Abbasibh
quelle
-3

Ich habe einen Bigint-Datentyp verarbeitet, der in einer DataGridView angezeigt werden soll, und ihn so erstellt

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