Fórum Gravar e exibir imagem JPG no MySQL, problema com código! #348267
31/10/2007
0
Gostaria da ajuda dos amigos para resolver meu problema em gravar e exibir uma imagem de formato JPG na minha tabela com campo BLOB no MySQL.
Ahh, gostaria de utilizar o OpenPictureDialog para encontrar as imagems.
Utilizo Delphi 7.
BD : MySQL 5
Connector : dbExpress
Minha tabela : SENHAS_DE_ACESSO
Campo da imagem: Tipo : BLOB
Nome: WALLPAPER
[b:70f02d55c9]Declaro na Uses as bibliotecas:[/b:70f02d55c9]
Uses
JPEG, DB, DBTables;
[b:70f02d55c9]Segue abaixo meu código para gravar a imagem:[/b:70f02d55c9]
procedure TFormPrincipal.Wallpaper1Click(Sender: TObject); Var FileStream : TFileStream; BlobStream : TStream; begin //Inicia a consulta SQL DM.SQLQuerySenhasdeAcesso.Active := False; DM.SQLQuerySenhasdeAcesso.SQL.Clear; DM.SQLQuerySenhasdeAcesso.SQL.Add(´SELECT * FROM SENHAS_DE_ACESSO WHERE CODIGO =´); DM.SQLQuerySenhasdeAcesso.SQL.Add(RecebeIDOperador); DM.SQLQuerySenhasdeAcesso.Open; DM.SQLQuerySenhasdeAcesso.Active := True; inherited; if DM.SQLQuerySenhasdeAcesso.State = dsinactive then begin MessageDlg(´Abra um registro antes de alterar os dados!´,mtinformation,[mbok],0); exit; end; if not (DM.SQLQuerySenhasdeAcesso.State in ([dsEdit,dsInsert])) then DM.DataSourceSenhasdeAcesso.DataSet.Edit; if OpenPictureDialogVendaseServicos.Execute Then begin try FileStream:=TFileStream.Create(OpenPictureDialogVendaseServicos.FileName, fmOpenRead or fmShareDenyWrite); BlobStream := DM.DataSourceSenhasdeAcesso.DataSet.CreateBlobStream(DM.DataSourceSenhasdeAcesso.DataSet.FieldByName(´WALLPAPER´),bmWrite); try BlobStream.CopyFrom(FileStream,FileStream.Size); finally FileStream.Free; BlobStream.Free; end; except ShowMessage(´Problemas com memória.´); end; end;
[b:70f02d55c9]Segue abaixo meu código para ler a imagem:[/b:70f02d55c9]
procedure TFormPrincipal.FormCreate(Sender: TObject); var B : TStream; JPG: TJPEGImage; begin //Este procedimento carrega a imagem do plano de fundo do FrmPrincipal do sistema //Inicia a consulta SQL DM.SQLQuerySenhasdeAcesso.Active := False; DM.SQLQuerySenhasdeAcesso.SQL.Clear; DM.SQLQuerySenhasdeAcesso.SQL.Add(´SELECT * FROM SENHAS_DE_ACESSO WHERE CODIGO =´); DM.SQLQuerySenhasdeAcesso.SQL.Add(RecebeIDOperador); DM.SQLQuerySenhasdeAcesso.Open; DM.SQLQuerySenhasdeAcesso.Active := True; DM.ClientDataSetSenhasdeAcesso.Active := True; ImageFormPrincipal.Picture.Assign(nil); JPG := nil; B := DM.ClientDataSetSenhasdeAcesso.CreateBlobStream(DM.ClientDataSetSenhasdeAcesso.FieldByName(´WALLPAPER´), BMREAD); IF B.Size > 0 THEN BEGIN try JPG := TJpegImage.Create; JPG.LoadFromStream(B); ImageFormPrincipal.Picture.Assign(JPG); except end; end else ImageFormPrincipal.Picture.Assign(nil); JPG.Free; B.Destroy; end;
O erro que me retorna é:
[color=red:70f02d55c9]Você tem um erro de sintaxe no seu SQL próximo a linha ´ na linha 1.[/color:70f02d55c9]
Já fuxei em tudo mas não to conseguindo.
Já procurei praticamente todos os forums sobre armazernar imagems em campos BLOB, mas até agora nada.
Admimito que devo estar ´apanhando´ ... mas preciso da ajuda mesmo.
Agradeço e aguardo respostas.
Att.
Devmedia
Curtir tópico
+ 0Posts
31/10/2007
Devmedia
Gostei + 0
31/10/2007
Devmedia
ou tem outro codigo, seguindo dbExpress e MySQL ???
porfavor, ajuda!
att.
Gostei + 0
31/10/2007
Devmedia
Quem um dia tiver dúvida, com este mesmo problema que estava. Entre em contato que mostro como fazer.
Funcionou:
Gravar e Ler, Imagem formato JPEG no BD MySQL 5.0.27 utilizando connector dbExpress.
Att.
Gostei + 0
18/11/2014
Flavio Denis
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)