Estoy usando System.Data.SQLite, seleccionando de una tabla de base de datos sqlite donde la columna tiene tipo 'entero', y cuando hago algo como esto:Cuando selecciono de la columna sqlite del tipo 'int' puedo convertir a .net int pero cuando selecciono de la columna 'integer' no puedo
int x = (int)reader["myColumn"];
falla. El problema no es que el valor sea nulo; la columna no puede contener nulos. Si cambio el tipo de datos de la columna a 'int', entonces funciona bien. Los valores en la columna son '2', '3', '4', etc .; nada muy grande.
¿Alguien sabe si esto es comportamiento esperado?
Estaba volviendo a esta pregunta para responderla yo mismo después de descubrir que, de hecho, 'long x = (long) reader [" myColumn "];' funciona bien. Tienes toda la razón, fue un Int64, así que usar variables largas me funcionará. En cuanto a por qué el comportamiento funciona de manera diferente para INT e INTEGER, todavía me resulta extraño. Puedo repetir el éxito/fracaso de la conversión desde INT/INTEGER, para los mismos valores de datos en la tabla, y también puedo replicar el problema en otra tabla. Presumiblemente solo una ligera inconsistencia en el controlador. – Rory