Gravar e exibir imagem JPG no MySQL, problema com código!

Delphi

31/10/2007

Olá.

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

Devmedia

Curtidas 0

Respostas

Devmedia

Devmedia

31/10/2007

porfavor alguém me ajuda.


GOSTEI 0
Devmedia

Devmedia

31/10/2007

ninguém tem conhecimento sobre tal?
ou tem outro codigo, seguindo dbExpress e MySQL ???

porfavor, ajuda!
att.


GOSTEI 0
Devmedia

Devmedia

31/10/2007

Cabou que fuçei, fuçei e com ajuda do amigo Mayron Cachima consegui solucionar o problema.

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
Flavio Denis

Flavio Denis

31/10/2007

Qual seu email? tenho o mesmo problema e nao consegui ate o momento resolver.
GOSTEI 0
POSTAR