Imagem no Banco de Dados Sql Server

Delphi

04/08/2010

Pessoal,

Gostaria de gravar imagens no banco de dados sql server.

Alguem tem algum exemplo?

Ficaria muito lento  o  sistema???

no aguardo
Evandro Abreu

Evandro Abreu

Curtidas 0

Respostas

Eriley Barbosa

Eriley Barbosa

04/08/2010

Sabe que o sqlserver quanto mais memória tiver o servidor mais ele vai utilizar, mas a armazenagem numa tabela sendo feito um select * ficaria meio lento, mas se for parametrizado, ou seja, traz um registro a cada consulta vai ficar bom, mas gravar a imagem no banco de dados aumentaria o tamanho do seu banco.   Atenciosamente   Eriley
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

04/08/2010

Não sei que componentes está usando para acessar o sqlserver, mas segue um exemplo com ADO:   digamos q no SQL Server temos uma tabela (imagens) com os campos descricao (varchar) e imagem (image)

e temos tbm um StoredProcedure (IncImagem) cujo codigo principal eh:
Insert Into Imagens(Descricao, Imagem) Values(@vDescricao, @vImagem)

no Delphi poreriamos usar um ADOCommand incluindo no CommandText : execute IncImagem :vDescricao, :vImagem

Incluindo uma imagem a partir de um TImage:
var
SM : TMemoryStream;
begin
SM := TMemoryStream.Create;
image1.Picture.Bitmap.SaveToStream(SM);
Adocommand1.Parameters.ParamByName('vDescricao').Value := Edit1.text;
AdoCommand1.Parameters.ParamByName('vImagem').LoadFromStream(SM, ftBlob);
AdoCommand1.Execute;
SM.Free;
end;

Incluindo uma imagem a partir de uma arquivo:
Adocommand1.Parameters.ParamByName('vDescricao').Value := Edit1.text;
AdoCommand1.Parameters.ParamByName('vImagem').LoadFromFile('Pescaria.bmp', ftBlob);
AdoCommand1.Execute;


Se vc estiver usando um ADOStoredProc o processo eh semelhante. Deve-se informar o ProcedureName (IncImagem;1). Observe que os parametros herdam o prefixo @ da sintaxe do SQLServer:
AdoStoredproc1.Parameters.ParamByName('@vImagem').LoadFromStream(SM, ftBlob);
E o metodo de execucao e AdoStoredproc1.ExecProc;   Atenciosamente   Eriley
GOSTEI 0
POSTAR