Ver Mensaje Individual
  #1  
Antiguo 17-05-2018
NicolasP NicolasP is offline
Miembro
 
Registrado: may 2013
Posts: 28
Reputación: 0
NicolasP Va por buen camino
Grabar imagen en Sqlite Android y Windows.

Estoy con una app que lee y graba fotos (entre otros datos) en una base Sqlite. Después de seguir muchos ejemplo logre que funcione bien leyendo y escribiendo .
Seguí este ejemplo de Jonatan Souza y me funciona bien en android.

https://www.youtube.com/watch?v=2X7yDJYHuQk&t=62s

Ahora bien... en windows no funciona ....

Si bien la aplicación no es para windows , hago pruebas ahí (creo, como muchos) por una cuestión del tiempo que tarda la aplicación en correr.
Al leer: "Loading bitmap failed" y al grabar nada ..... pero tampoco la graba, lo verifiqué. Los otros datos se leen y graban sin problemas.
Uso Sqlite 3 , el archivo tiene se llama base1.s3db y es el mismo que subo al teléfono cuando pruebo. Me imagino que puede ser una cosa de versiones de sqlite. Ni idea que tiene el teléfono... La verdad nose.

Uso Delphi 10.1 -

grabar:

Código Delphi [-]
var
    BlobStream : TStream;
    QGuardar : TFDQuery;
begin
  QGuardar := TFDQuery.Create( Nil );
  QGuardar.Connection := FDConnection1;
  QGuardar.SQL.Clear;
  QGuardar.SQL.Add('SELECT perfil WHERE id=1');
  QGuardar.ExecSQL;
     lb_nombre.Text :=  QGuardar.FieldByName('nombre').AsString;
     lb_email.Text := QGuardar.FieldByName('email').AsString;
     ed_fechaNac.Text := QGuardar.FieldByName('fechanac').AsString;
     BlobStream := QGuardar.CreateBlobStream(
                        QGuardar.FieldByName('foto'),TBlobStreamMode.bmRead
                       );

    FotoPerfil.LoadFromStream(BlobStream);
    Cir_Foto.fill.bitmap.Bitmap := FotoPerfil;


  QGuardar.Close;



leer:
Código Delphi [-]
procedure TFormThree.BC_SalvarPerfilClick(Sender: TObject);
Var
 qrySalvar : TFDQuery;
 ImgSalvar : TMemoryStream;
begin

  qrySalvar := TFDQuery.Create( Nil );
  qrySalvar.Connection := FDConnection1;

    qrySalvar.SQL.Clear;
   qrySalvar.SQL.Add('UPDATE perfil SET nombre=:name, email=:email, foto=:foto WHERE id=1');
   qrySalvar.ParamByName('name').AsString := Ed_NOMBRE.Text;
   qrySalvar.ParamByName('email').AsString := Ed_Email.Text;


   ImgSalvar := TMemoryStream.Create;
   FotoPerfil.SaveToStream( ImgSalvar );
   ImgSalvar.Seek(0,0);

   qrySalvar.ParamByName('foto').LoadFromStream( ImgSalvar, ftBlob);

   qrySalvar.ExecSQL;

end;
Responder Con Cita