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!