2010-01-21 26 views

Respuesta

247

que corresponde a la 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 mantendrá.

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

+77

¿Seguro que no es un desbordamiento de enteros? – luqui

+3

Buena referencia para más tipos de datos: http://msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx – MacGyver

+1

Desbordamiento de pila recursivo ... – Nate

43

Int64 mapas directamente a BigInt.

Source

+3

es larga otro nombre para Int64/ –

+9

Sí. La palabra clave 'long' es un alias para' System.Int64'. –

3

Utilice una larga tipo de datos.

2

Creo que el equivalente es Int64

9

acabo de tener un guión que devuelve la clave primaria de una inserción y utilizó una

SELECT @@identity 

en mi clave primaria bigint, y me sale un error fundido usando largo - 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, que equivale a un tipo de decimal. Usar un largo provocará 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 un administrador de la base que me ayudó a cabo:

... Bigint no es lo mismo que Int64 no importa lo mucho que se parecen. Parte de la razón es que SQL convertirá con frecuencia Int/BigInt a Numérico como parte del procesamiento normal. Entonces, cuando va a OLE o .NET, la conversión requerida es NUMERIC a INT.

No es frecuente notar ya que el valor impreso tiene el mismo aspecto."

+0

Gracias por el consejo numérico ... ¡solo me ayudó mucho! – jpshook

+0

Solo me ayudó, leyendo un BigInt Scope_Identity – cost

+6

Recibió un error de conversión porque SCOPE_IDENTITY y @@ IDENTITY devuelven NUMERIC (38, 0), no porque su BigInt PK no se ajusta 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

0

estaba manejando un tipo de datos bigint para ser mostrado en un DataGridView y lo hizo como esto

something = (int)(Int64)data_reader[0]; 
+0

¿Está intentando abatir? – Technacron

3

Usted puede utilizar long tipo o Int64

2

int en SQL Maps directamente a int32 también conocido como un tipo primitivo es decir int en C# mientras que

bigint en SQL Maps directamente a Int64 también conocido como un tipo primitivo i.e flotante en C#

una conversión explícita si BigInteger al número entero se ha definido here

Cuestiones relacionadas