he especificado una columna MySQL como:¿Cómo recuperar un valor int en lugar de un booleano de una columna TININT (1)?
`type` TINYINT(1) NOT NULL DEFAULT '0'
La intención de la columna es almacenar un valor entero que no exceda de 127, ya que no se espera que sean más que un muy pocos objeto "tipos".
He almacenado '2' en el campo para una de mis filas.
Usando SqlYog, un simple SELECT type FROM table
produce el resultado correcto, 2.
Sin embargo, utilizando el conector/Net 6.1.2 (la verdad es que es un poco fuera de fecha, ya que la versión actual es la 6.5.4), ocurre lo siguiente:
var Temp = Reader["type"].GetType(); // equals "Boolean"
este tipo de columna es usado generalmente para valores booleanos, pero en este caso me quieren obtener el valor entero. A continuación se deja de producir el resultado esperado:
int i = Reader.GetInt32("type"); // equals 1 (should be 2)
Cuál es la forma adecuada para obtener valores enteros desde un TINYINT (1) usando Connector/Net en una aplicación .NET?
Se trata de utilizar la versión 5.5.16 de MySQL
Tiene usted razón; 'TINYINT' se usa generalmente para booleanos. Sugeriría usar solo un campo de tipo 'INTEGER' normal, el espacio de almacenamiento no puede ser * tan * costoso. ;) –
¿Has probado 'SELECT CAST (escribe ASIGNADO) COMO tipo FROM table'? –
El almacenamiento no es un problema; pero mi preocupación era más por la velocidad/el rendimiento. Si sé que un valor en particular nunca excederá un límite, trato de ajustar el tamaño de la columna de manera apropiada. (Por eso no todas mis columnas int son 'BIGINT '. :)) Tal vez debería usar' SMALLINT' y llamarlo un día, pero quería saber más acerca de los antecedentes técnicos de este caso. – JYelton