¿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?

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!


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


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 "


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

Puedes usar longtype oInt64



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í



0

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


-3

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

something = (int)(Int64)data_reader[0];
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.