26 de jan. de 2010

Carregando uma imagem no banco de dados

Faz tempo que não tem postagem nova, então vamos lá. Uma dica que resolve uma pergunta recorrente em alguns fórums de Delphi.

Como fazer pra gravar uma imagem num campo Blob? Fiz uma função para isso, a seguir:
procedure LoadPictureToDataset(FileName: TFileName; Dataset: TDataset; PictureFieldName: String);
begin
if StrIsEmpty(FileName) then
raise Exception.Create('Nome de arquivo não pode ser vazio.');
Assert(Dataset <> Nil);
Assert(Dataset.FindField(PictureFieldName) <> Nil, 'Nome de campo inválido: ' + PictureFieldName);
Assert(not (Dataset.FieldByName(PictureFieldName) is TGraphicField), 'Campo ' + PictureFieldName + ' não suporta imagens');
TBlobField(Dataset.FieldByName(PictureFieldName)).LoadFromFile(FileName);
end;