Cosa dovrei usare quando gestisco un valore in C#, che è bigint per un database SQL del server?Qual è l'equivalente di bigint in C#?
risposta
corrispondente al lungo (o Int64), un intero a 64 bit.
Anche se il numero dal database sembra essere sufficientemente piccolo e si utilizza accidentalmente un Int32, ecc., Andrà tutto bene. Ma il Int64 lo manterrà sicuramente.
E l'errore si ottiene se si utilizza qualcosa di più piccolo e la dimensione completa è necessaria? Un eccesso di stack! Yay!
Int64
mappe direttamente su BigInt
.
è lunga altro nome per Int64/ –
Sì. La parola chiave 'long' è un alias per' System.Int64'. –
Utilizzare una lunga tipo di dati.
Credo che l'equivalente è Int64
Ho appena avuto uno script che ha restituito la chiave primaria di un inserto e ha utilizzato un
SELECT @@identity
sulla mia chiave primaria bigint, e ottengo un errore di getto utilizzando lungo - ecco perché ho iniziato questa ricerca. La risposta corretta almeno nel mio caso è che il tipo restituito da quella selezione è NUMERICO che equivale a un tipo decimale. L'uso di un long causerà un'eccezione cast.
Questo è uno dei motivi per verificare le risposte in più di una ricerca su Google (o anche su Stack Overflow!).
Per citare un amministratore di database che mi ha aiutato:
... BigInt non è lo stesso di INT64 non importa quanto si assomigliano. Parte del motivo è che SQL converte spesso Int/BigInt in Numerico come parte della normale elaborazione. Quindi, quando si passa a OLE o .NET, la conversione richiesta è NUMERICA su INT.
Non abbiamo spesso notato dal momento che il valore stampato sembra lo stesso."
Grazie per il suggerimento numerico .. mi ha aiutato molto alla grande! – jpshook
Solo mi ha aiutato anche a leggere un BigInt Scope_Identity – cost
Hai ricevuto un errore di cast perché SCOPE_IDENTITY e @@ IDENTITY restituiscono NUMERIC (38, 0), non perché il tuo BigInt PK non si adatta a un C# Int64. In altre parole, BigInt _is_ è uguale a Int64, ma i valori BigInt restituiti tramite SCOPE_IDENTITY o @@ IDENTITY possono essere convertiti in NUMERIC (38, 0). – Dan
ero gestione di un tipo di dati bigint per essere esposta in una DataGridView e ne ha fatto come questo
something = (int)(Int64)data_reader[0];
stai cercando di downcast? – Technacron
È può usare long
tipo o Int64
int nelle mappe SQL direttamente al int32 anche conosciuto come un tipo primitivo cioè int in C# mentre
bigint nelle mappe SQL direttamente al Int64 anche conosciuto come un tipo primitivo i.e galleggiante in C#
Una conversione esplicita se BigInteger per intero è stato definito here
Sicuro che non sia overflow intero? – luqui
Buon riferimento per altri tipi di dati: http://msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx – MacGyver
Overflow stack ricorsivo ... – Nate