fotos no banco de dados
eu testei algumas dicas publicadas mas as que tentam gravar jpeg no bd não dão certo alguém já fez funcionar?
faz tempo que tento.
bmp da certo mas o tamanho é o problema...
faz tempo que tento.
bmp da certo mas o tamanho é o problema...
Crcam
Curtidas 0
Respostas
Lucas Silva
31/07/2004
Colega,
Isso deixa o banco muito pesado...
Pense duas vezes antes de fazer isto!
Isso deixa o banco muito pesado...
Pense duas vezes antes de fazer isto!
GOSTEI 0
Marcelo.c
31/07/2004
Há uma discussão sobre o assunto neste [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=47439&highlight=fotos]tópico[/url].
GOSTEI 0
Bon Jovi
31/07/2004
Guardar em diretório não é uma solução ruim, mas isso é arriscado qto a integridade. Como garantir que as fotos num diretório estarão com integridade referencial em relação a tabela no banco? Garantir integridade de dados via programa é meio q voltar aos tempos de soluções Clipper.
Qto a ficar pesado, somente se for usado dados normais e BLOBS no mesmo banco de dados aí realmente fica uma solução ruim. Usando um bom SGDB, que permita relacionamento entre base de dados diferentes, basta ter uma base pra guardar tabelas de fotos e outra pra tabelas de dados normais. Tipo:
BancoNormal..TAB_FOTOS (Id_Foto[PK], Descricao)
BancoFotos..TAB_FOTOS_BLOB (Id_Foto[FK], ArquivoBlob).
Segue solução ilustrativa usando DBImage:
Qto a ficar pesado, somente se for usado dados normais e BLOBS no mesmo banco de dados aí realmente fica uma solução ruim. Usando um bom SGDB, que permita relacionamento entre base de dados diferentes, basta ter uma base pra guardar tabelas de fotos e outra pra tabelas de dados normais. Tipo:
BancoNormal..TAB_FOTOS (Id_Foto[PK], Descricao)
BancoFotos..TAB_FOTOS_BLOB (Id_Foto[FK], ArquivoBlob).
Segue solução ilustrativa usando DBImage:
procedure TForm1.EscolheImagem(Imagem: TDBImage); var oJPEG: TJPEGImage; oDialogo: TOpenPictureDialog; oPicture: TPicture; begin if not Assigned(Imagem) then Exit; if (not Assigned(Imagem.DataSource)) or (Imagem.DataField = ´´) then Exit; if not Assigned(Imagem.DataSource.DataSet) then Exit; if not (Imagem.DataSource.DataSet.Active) then Exit; oDialogo := TOpenPictureDialog.Create(nil); try oDialogo.Options := [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]; oDialogo.Filter := ´Imagens (*.jpg;*.jpeg;*.bmp)|*.jpg;*.jpeg;*.bmp´; oPicture := TPicture.Create; try oJPEG := TJPEGImage.Create; try if oDialogo.Execute then begin oPicture.LoadFromFile(oDialogo.FileName); oJPEG.Assign(oPicture.Graphic); if not (Imagem.DataSource.DataSet.State in dsEditModes) then Imagem.DataSource.DataSet.Edit; Imagem.Picture.Graphic.Assign(oJPEG); end; finally FreeAndNil(oJPEG); end; finally FreeAndNil(oPicture); end; finally FreeAndNil(oDialogo); end; end; procedure TForm1.Button1Click(Sender: TObject); begin EscolheImagem(DBImage1); end;
GOSTEI 0
Aroldo Zanela
31/07/2004
Colega,
Você pode guardar qualquer tipo de dado num campo do tipo BLOB na maioria dos SGBDs. No caso do IB/FB não é diferente. Eu ratifico a sugestão do colega Bon Jovi e acrescento que, no caso do armazenamento num diretório, você perde na segurança adicional fornecida pela aplicação.
Você pode guardar qualquer tipo de dado num campo do tipo BLOB na maioria dos SGBDs. No caso do IB/FB não é diferente. Eu ratifico a sugestão do colega Bon Jovi e acrescento que, no caso do armazenamento num diretório, você perde na segurança adicional fornecida pela aplicação.
GOSTEI 0