jueves, 12 de junio de 2014

InvalidCastException La conversion espedificada no es válida leyendo un SQLDataReader Tipo Smallint c#

Estaba lanzando una consulta sencilla y al recuperar un campo de la consulta me devolvía el error mostrado ..

si miramos el detalle de la excepcion muestra la siguiente información.. 

El problema es que tenia el campo definido en al base de datos como Smallint y al realizar la lectura del siguiente modo ...

   SqlConnection conn = null;
            conn = new SqlConnection(cloudModel.Database.Connection.ConnectionString);
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;

            string vConsulta = "select miCampoSmallint from miTabla;

            cmd.CommandText = vConsulta;
            SqlDataReader rdr = cmd.ExecuteReader();

            int miVariable = (int) rdr["miCampoSmallint"] => al realizar la conversion a int del campo smallint tenia el error del que hablamos. 

            La solucion es tan simple como realizar el casting con un short

            short miVariable = (short) rdr["miCampoSmallint"]

Me ha dolido la cabeza hasta darme cuenta de este error tan tonto así que espero sea de ayuda para otros. Saludos  

No hay comentarios:

Publicar un comentario

Jesús Moreno - Ingeniero Ténico Informático - consultor Informático

Hola, soy Jesús Moreno Ingeniero Técnico Informático en sistemas por la US y propietario de éste blog. Mi trabajo en los ultimos años se ...