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

Resuelto Asad asked hace 14 años • 12 respuestas

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

Asad avatar Jan 22 '10 05:01 Asad
Aceptado

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 usas un Int32, etc., estarás bien. Pero el Int64 definitivamente aguantará.

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

Patrick Karcher avatar Jan 21 '2010 22:01 Patrick Karcher

Int64mapas directamente a BigInt.

Fuente

ChaosPandion avatar Jan 21 '2010 22:01 ChaosPandion

Acabo de tener un script que devolvía la clave principal de una inserción y usaba un

SELECT @@identity

en mi clave principal bigint y aparece un error de conversión al usar 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. El uso de un largo provocará una excepción de conversión.

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 por mucho que se parezcan. Parte de la razón es que SQL frecuentemente convertirá Int/BigInt a Numeric como parte del procesamiento normal. Entonces, cuando pasa a OLE o .NET, la conversión requerida es NUMÉRICA a INT.

No solemos darnos cuenta porque el valor impreso tiene el mismo aspecto.

Robb Sadler avatar Sep 20 '2010 19:09 Robb Sadler

Utilice un tipo de datos largo.

Otávio Décio avatar Jan 21 '2010 22:01 Otávio Décio