Problema resuelto!, Imagen en Mysql

Hola foro, le pongo un ejemplo de como grabar una imagen en mysql ,se que a mas de uno le dio dolor de cabeza! Este cdigo lo utilice con un listbox.

//GRABAR IMAGEN EN MYSQL
Dim pTmp As Picture=imwpicture.Image
Dim mbEnc As MemoryBlock= pTmp.GetData(Picture.FormatPNG) ’ Puede ser jpg
Dim sEnc As String= Encodebase64(mbEnc.StringValue(0, mbEnc.Size))
Dim sql As String= “UPDATE lista SET imagen= '”+ sEnc+ "’ WHERE id= "+ DataList.cell(DataList.Listindex, 0)
App.mDB.SQLExecute(sql)
If App.mDB.Error Then MsgBox “Error”

// CARGAR IMAGEN DE MYSQL
Dim rs As RecordSet= app.mdb.SQLSelect("SELECT * FROM lista WHERE id= "+ DataList.cell(DataList.Listindex, 0))
If (Len(rs.Field(“imagen”).StringValue)>0) then
Dim a as string = Decodebase64(rs.Field(“imagen”).StringValue)
imwpicture.image = Picture.FromData(a)
End if

Si alguien puede aportar algo para mejorarlo bienvenido sea, espero les se de utilidad, saludos

Hola Mike
Yo trabajo de esta forma, en la base de datos procura que imagen sea del tipo blob

Guardar

dim rec as new DatabaseRecord

rec.PictureColumn("imagen") = imwpicture.Image
App.mDB.InsertRecord("lista", rec)

Actualizar

dim id as String = DataList.Cell(DataList.ListIndex,0)
dim rs as RecordSet

rs = App.mDB.SQLSelect("SELECT  * FROM lista  WHERE id = '" + id + "'")

if rs <> nil then        
      rs.Edit        
      rs.Field("imagen").PictureValue = imwpicture.Image
      rs.Update        
      App.mDB.Commit      
end if
rs.Close

Cargar

dim id as String = DataList.Cell(DataList.ListIndex,0)
dim rs as RecordSet

rs = App.mDB.SQLSelect("SELECT  * FROM lista  WHERE id = '" + id + "'")

 if rs <> nil then
     imwpicture.Image = rs.Field("imagen").PictureValue
 end if    
rs.Close

Hola Javier, en realidad utilizo longblob, porque me corta la imagen, esta mal lo que estoy haciendo? Otra cosa buscado me tope que cuando se trata de imagen en una base de datos, para que no tenga problemas de carga se utilice encodebase64, es cierto esto?

saludos

Hola Mike

longblob creo que es lo apropiado si usas Mysql, blob existe en Sqlite. Sobre evitar problemas de carga, puede que al convertir usando encodebase64 sea una forma mas universal que se aplique a distintos tipos de bases de datos, o lenguajes de programacin.
La forma de trabajar que te mencion sala como referencia, a mi me funciona, pero si buscas la mejor slo haz pruebas y toma tu propia decisin.

Ok, gracias javier!
saludos

Hola, aún no he podido guardar la imagen en MySQL, consultas:

Mike: el objeto imwpicture, de que tipo es?!

Tienen algún ejemplo básico que me pueda descargar, desde ya muchas gracias!

Hola @Mauricio Tanco

He publicado recientemente un artículo sobre cómo guardar imágenes en Bases de Datos. Este es el enlace.

¿Resuelve esto tu problema?

Javier Rodríguez
Evangelista Xojo en Español, Desarrollador, Consultor y Formador Xojo
Autor del libro “Programación Multiplataforma Xojo
Autor del plug-in GuancheMOS para Xojo
Snippery para OS X: editor y gestor de fragmentos… ¡y más!