none
Como retornar una imgen de una base de datos MySql? RRS feed

  • Pregunta

  • Quiero que al hacer el select de la imagen guardada en formato blob me retorne en un pictureBox que yo ponga determinado. 

    Adjunto el código:

    private static MySqlConnection conexion = new MySqlConnection("Server=127.0.0.1; database=inmobiliaria; Uid=root; pwd=;");
            private static MySqlDataAdapter da;
            private static DataTable dt;

      try
                {
                    conexion.Open();
                    MySqlCommand com = new MySqlCommand("SELECT imagen from fotos where id_inmueble='" + txtIn + "'", conexion);
                    da = new MySqlDataAdapter(com);                
                    dt = new DataTable();                 
                    da.Fill(dt);

                    byte[] datos = (byte[])dt.Rows[0][1];
                    MemoryStream ms = new MemoryStream(datos);
                    pbImagen.Image = Image.FromStream(ms);              

                }
                catch (Exception ex)
                {
                    MessageBox.Show("No se pudo mostrar la imagen" + ex);
                }
                finally
                {
                    conexion.Close();
                }

    Siempre me dice que esta linea:

     byte[] datos = (byte[])dt.Rows[0][1]; llega a 0, vamos que no retorna ningún dato.

                    
    jueves, 13 de junio de 2019 10:55

Todas las respuestas

  • hola

    veo que no validas si se retorno un registro

    MySqlCommand com = new MySqlCommand("SELECT imagen from fotos where id_inmueble = ?id", conexion);
    com.Parameters.AddWithValue("?id", txtIn.Text);
    
    MySqlDataAdapter da = new MySqlDataAdapter(com);  
    debes usar siempre parametros sin olvidar el .Text para tomar el valor

    Despues debes validar si hay registros

    if(dt.Rows.Count > 0){
    
       //si hay registros
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 13 de junio de 2019 13:14