none
Ayuda con cargar imagen. RRS feed

  • Pregunta

  • Bueno la pregunta es como hago para recuperar una imagen desde una base de datos access? hice una clase pero no se bien como definir la variable de la imagen.. de que tipo la defino? y despues como hago para recuperarlo con el dataReader?

    while (conexion.pDr.Read())
                {
                    P[contador] = new Productos();
                    if (!conexion.pDr.IsDBNull(0))
                        P[contador].pCodigo = conexion.pDr.GetInt32(0);
                    if (!conexion.pDr.IsDBNull(1))
                        P[contador].pNombre = conexion.pDr.GetString(1);
                    if (!conexion.pDr.IsDBNull(2))
                        P[contador].pPrecio = conexion.pDr.GetDouble(2);
                    if (!conexion.pDr.IsDBNull(3))
                        P[contador].pStock = conexion.pDr.GetDouble(3);
                    if (!conexion.pDr.IsDBNull(4))
                        P[contador].pCategoria = conexion.pDr.GetInt32(4);
                    if (!conexion.pDr.IsDBNull(5))
                        P[contador].pProveedor = conexion.pDr.GetInt32(5);
                    if (!conexion.pDr.IsDBNull(6))
                        P[contador].pImagen = conexion.pDr.GetValue(6);
                    contador++;
                }

    esto uso para obtener los valores de la base y meterlos en la clase (P) el problema es con el ultimo pImagen.. le puse ipo de variable Image pero no se como obtener el valor con el dataReader.. ese ultimo esta hecho de tipo Object pero no me funciono bien.. despues a la imagen la quiero mostrar en un picturebox.. hice una conversion de tipo object a Image que no se si esta muy bien..

      public Image convertidor(Object objeto)
            {
                byte[] data = (byte[]) objeto;
                MemoryStream ms = new MemoryStream(data);
                Image im = Image.FromStream(ms);
                return im;
            }

    por favor si alguien conoce alguna forma mas facil que el lio en el que me estoy metiendo.. agradezco desde ya (lo peor de todo es que todo ese desastre de codigo no tira error)

    jueves, 12 de marzo de 2015 14:32

Respuestas

  • hola

    aqui

     Como guardar imagenes en acces con c#

    respondo esa pregunta, la idea es convertir el campo que tomas del reader en un byte[] y de este a un image para asignarlo al picturebox

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 12 de marzo de 2015 14:57
  • Hola

    La imagen en la base de datos deberia estar como varbinary. 

    Para obtenerla imagen desde la base de datos puedes hacerlo así

    var reader = command.ExecuteReader();
    
    reader.Read();
    byte[] arrayImg = (byte[])reader[indeiceImagen];
    MemoryStream ms = new MemoryStream(arrayImg);
    FileStream fs = new FileStream(rutaDondeSeGuardarayNombre, File.Create, FileAccess.Write, FileShare.ReadWrite);
    
    fs.Flush();
    fs.close();
    ms.close();
    
    

    Saludos

    jueves, 12 de marzo de 2015 15:24

Todas las respuestas

  • hola

    aqui

     Como guardar imagenes en acces con c#

    respondo esa pregunta, la idea es convertir el campo que tomas del reader en un byte[] y de este a un image para asignarlo al picturebox

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 12 de marzo de 2015 14:57
  • Hola

    La imagen en la base de datos deberia estar como varbinary. 

    Para obtenerla imagen desde la base de datos puedes hacerlo así

    var reader = command.ExecuteReader();
    
    reader.Read();
    byte[] arrayImg = (byte[])reader[indeiceImagen];
    MemoryStream ms = new MemoryStream(arrayImg);
    FileStream fs = new FileStream(rutaDondeSeGuardarayNombre, File.Create, FileAccess.Write, FileShare.ReadWrite);
    
    fs.Flush();
    fs.close();
    ms.close();
    
    

    Saludos

    jueves, 12 de marzo de 2015 15:24