Almacenar en variable un valor entero con MySqlDataReader

Iniciado por RevolucionVegana, 10 Abril 2017, 11:35 AM

0 Miembros y 1 Visitante están viendo este tema.

RevolucionVegana

Hola a todos ayer estuve con este problema unas 2 o 3 horas y hoy 1 hora no paro de buscar y me salen resultados sobretodo he ido probando soluciones de StackOverflow, y aunque me ha servido muchas cosas que he ido leyendo para aclararme sobre que puedo y que no puedo hacer con ExecuteScalar() ExecuteNonQuery() y un poco ExecuteReader(), no consigo obtener el número que hay almacenado en una celda que puede ser 1 o 0, esto lo almacenamos en una variable y dependiendo de lo que sea se hará una cosa u otra, he probado poniendo el lector.Read() dentro de while y también dentro de IF y nada, también metiendo lo de MySqlDataReader lector = comando.ExecuteReader() dentro de un using(aquí){},

Código (csharp) [Seleccionar]

MySqlConnection HacerConexion = new MySqlConnection(ConexionDB);
           HacerConexion.Open(); //Abrimos conexión
           MySqlCommand comando = new MySqlCommand(ConsultaSQL, HacerConexion);
           MySqlDataReader rd = comando.ExecuteReader();

           rd.Read();
           int rangoUser = (int)rd["rango"];

           if(rangoUser == 0)
           {
               MessageBox.Show("No eres admin");
           }
           else
           {
               MessageBox.Show("Sí eres admin");
           }


Eso es lo que tengo ahora mismo e igualmente me da error en int rangoUser = (int) rd["rango"];

A ver si alguien tiene este mismo problemilla gracias y un saludo ahora buscaré por youtube a ver si veo algo

ACTUALIZACIÓN

Ya funciona!!!!! el problema venía de otra cosa totalmente diferente, necesitaba pasar el valor de un form a otro y por la tontería de que había puesto la variable estática (la que usaría más tarde en otro form) después de this.Hide() pues pasaba una variable vacía y claro después a la hora de hacer la consulta SQL en el WHERE le estaba pasando una variable vacía y por más que tocase cosas no conseguía nada, al final lo he hecho con ExecuteScalar() y me ha quedado tal que así:

Código (csharp) [Seleccionar]

MySqlConnection HacerConexion = new MySqlConnection(ConexionDB);
            HacerConexion.Open(); //Abrimos conexión
            MySqlCommand comando = new MySqlCommand(ConsultaSQL, HacerConexion);
            Int32 lector = Convert.ToInt32(comando.ExecuteScalar());

            if(lector == 0)
            {
                MessageBox.Show("No eres admin");
            }
            else if(lector == 1)
            {
                MessageBox.Show("Eres admin");
            }


Por si a alguien le sirve :D
HAS DICHO ALGO NENAAAAAA?!

Eleкtro

Cita de: RevolucionVegana en 10 Abril 2017, 11:35 AMme da error en int rangoUser = (int) rd["rango"];

¿Qué tipo de excepción y con que mensaje de error?. No somos adivinos.

¡Saludos!