Requiero almacenar imagenes JPEG en campo Blob de MySQl mediante sentecial SQL y visualizar las imagenes almacenadas en un campo DBImage o TImage, recuperando mediante sentiencias SQL, es decir sin usar TTable o ADOTable solo usando TSQL.
Pongo el codigo que estoy utilizando para almacenar las fotos en el campo IMAGEN de tipo Blob en la base en MySQL y de igual forma pongo el codigo que utilizo para recuperar las imagenes, hasta este momento no se si las imagenes se almacenan correctamente en el campo blob ya que no logro visualizar las imagenes.
Alguien que me ayude por favor a resolver el problema.
Y aprovechando este mismo codigo podria usarse para almacenar documento en formato DPF?
CODIGO QUE UTILIZO PARA ALMACENAR/GUARDAR LA IMAGEN JPEG EN CAMPO BLOB
procedure TFormDigitaVale.Button1Click(Sender: TObject); Var xSQl:String; MS : TMemoryStream; begin imgFoto.Picture.LoadFromFile('65ca57.jpg'); //imagen que guardo, esto solo es temporal la idea es escanear el documento y guardarlo. imgFoto.Stretch:=TRUE; //imgFoto es un componente TImage que permita visualizar la imagen que se almacena with DM1.QueryDM do begin Close; SQL.Clear; xSQL := ' Insert into repositorio (IDAlmacen,Anio,NoFacReq,Titulo,Imagen) '; xSQL := xSQL + ' Values (0,"2011","'+EditNumSalida.Text+'","descipcion de documento",:xDocumento)'; //EditNumSalida es el folio que asigno a la imagen para despues recuperar SQL.Add(xSQL); ParamByName('xDocumento').DataType := ftBlob; //se supone indico al campo blob que la imagen es blob ParamByName('xDocumento').LoadFromFile('65ca57.jpg', ftBlob); //cargo la imagen en campo blob ExecSQL; // ejecuto el SQL end; end;
Codigo que utilizao para recuperar la imagen desde campo Blob de BD MySQL y que deberia ser visuaizada en un TImagen.
procedure TFormDigitaVale.Button2Click(Sender: TObject); var imgJPG:TJpegImage; blobF:TBlobField; // Jpeg:TJpegImage; Corriente:TMemoryStream; fs : TMemoryStream; xSQl:String; begin imgJPG := TJpegImage.create; with DM1.QueryRepositorio do begin SQL.Clear; SQL.Add('SELECT * FROM repositorio WHERE IDAlmacen= 0 ' and anio=2011 and NoFacReq='+EditNumSalida.Text+' '); Open; if RecordCount = 1 then begin (FieldByName('imagen') as TBlobField).SaveToStream(fs); imgJPG.LoadFromStream(fs); with DM1.TableRepositorioImagen do begin imgFoto.Picture.Assign(imgJPG); // imgFOTO es un componente TImage imgFoto.Visible := True; ImgFoto.Refresh; end; end; // Close; //Evito cerrar el query que recupera la consulta pensado que se cerraba y que la imagen ya no se visualizaba end; fs.Free; imgJPG.Free; end;