¿Cuál es el equivalente de bigint en C #?

209

¿Qué se supone que debo usar al manejar un valor en C #, que es bigint para una base de datos de SQL Server?

Asad
fuente

Respuestas:

354

Eso corresponde al largo (o Int64 ), un entero de 64 bits.

Aunque si el número de la base de datos es lo suficientemente pequeño y accidentalmente usa un Int32, etc., estará bien. Pero el Int64 definitivamente lo sostendrá.

¿Y el error que obtiene si usa algo más pequeño y se necesita el tamaño completo? Un desbordamiento de pila! ¡Hurra!

Patrick Karcher
fuente
100
¿Seguro que no es desbordamiento de enteros?
luqui
66
Buena referencia para más tipos de datos: msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx
MacGyver
3
en C #, longno está en mayúscula.
Shawn Kovac
convertir datetime a largo?
Kiquenet
60

Int64mapas directamente a BigInt.

Fuente

ChaosPandion
fuente
3
es largo otro nombre para Int64 /
Asad
11
Si. La longpalabra clave es un alias para System.Int64.
Anon
12

Acabo de recibir un script que devolvió la clave principal de una inserción y usé un

SELECT @@identity

en mi clave principal bigint, y recibo un error de conversión usando long, por eso comencé esta búsqueda. La respuesta correcta al menos en mi caso es que el tipo devuelto por esa selección es NUMÉRICO, lo que equivale a un tipo decimal. Usar un largo causará una excepción de lanzamiento.

Esta es una razón para verificar sus respuestas en más de una búsqueda en Google (¡o incluso en Stack Overflow!).

Para citar a un administrador de base de datos que me ayudó:

... BigInt no es lo mismo que INT64, no importa cuánto se parezcan. Parte de la razón es que SQL frecuentemente convertirá Int / BigInt a Numeric como parte del procesamiento normal. Entonces, cuando va a OLE o .NET, la conversión requerida es NUMÉRICA a INT.

No nos damos cuenta a menudo porque el valor impreso se ve igual "

Robb Sadler
fuente
Gracias por el consejo numérico ... ¡me ayudó mucho!
jpshook
8
Recibió un error de transmisión porque SCOPE_IDENTITY y @@ IDENTITY devuelven NUMERIC (38, 0), no porque su BigInt PK no se ajuste a un C # Int64. En otras palabras, BigInt es lo mismo que Int64, pero los valores de BigInt devueltos a través de SCOPE_IDENTITY o @@ IDENTITY pueden convertirse a NUMERIC (38, 0).
Dan Hermann el
Gracias Dan. Para su información, sigue sucediendo con SQL Azure (RTM) - 12.0.2000.8 y .NET v 4.5
Gunnar
6

Use un tipo de datos largo.

Otávio Décio
fuente
6

Puedes usar longtype oInt64


fuente
2

Creo que el equivalente es Int64

John Boker
fuente
1

int en sql se asigna directamente a int32 también conocido como un tipo primitivo, es decir, int en C # mientras que

bigint en Sql Server se asigna directamente a int64 también conocido como un tipo primitivo, es decir, largo en C #

Una conversión explícita si biginteger a entero se ha definido aquí

Technacron
fuente
0

Para la mayoría de los casos es largo (int64) en c #

Rajeev Sirohi
fuente
0

si está usando bigint en su tabla de base de datos, puede usar Long en C #

Abbasibh
fuente
-3

Estaba manejando un tipo de datos bigint para mostrar en un DataGridView y lo hice así

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