GARANTIR DESCONTO

Fórum Como gravar um executável no BLOB?? #55046

01/02/2006

0

Tipow, não sabia se perguntava em delphi ou aqui mas como tem mais a ver com banco...
Queria gravar um executávelzinho de uns 200 ou 300 k no banco de dados. Me disseram que dá pra gravar num BLOB. Como eu faço???


Marcosrocha

Marcosrocha

Responder

Posts

01/02/2006

Sremulador

Você pode utilizar o stream...


Responder

Gostei + 0

07/02/2006

Rtava

Costumo usar ADO para acesso ao BD. Da forma descrita abaixo dá para grava texto, imagem, executável ou qualquer outra coisa no BLOB. Com ADO pode ser feito assim:

Var Stm: TStream;
    fl: TFileStream;
begin
   qrr.Open;

//////////////////  SALVANDO DADOS NUM BLOB ///////////////////
   Stm := TStream.Create;
   // Cria um FileStream, lendo um determinado arquivo em disco
   fl := TFileStream.Create(´c:\temp\ngame.zip´, fmOpenRead);

   // Insere um registro
   qrr.Append;
   // Cria um campo do tipo TBlobStream, apontado para o campo Blob do banco de dados
   Stm := qrr.CreateBlobStream(qrr.FieldByName(´xx´), bmReadWrite);
   // Copia o conteúdo do arquivo aberto a partir do disco, para dentro da
   // variável TBlobStream, representada aqui por "Stm"
   Stm.CopyFrom(fl, fl.Size);
   // LIBERA O TBlobStream DA MEMÓRIA
   // Este Stream deve obrigatoriamente ser liberado antes do Post
   Stm.Free;

   qrr.Post;
   qrr.Requery;
   fl.Free;


//////////////////  LENDO DADOS DE UM BLOB ///////////////////
   Stm := TStream.Create;
   // Aponta em disco o path e o nome do arquivo que deve ser criado
   // contendo o conteúdo do campo Blob do registro apontado
   fl := TFileStream.Create(´c:\temp\ngame_aaa.zip´, fmCreate);

   // Abre o registro para edição (OBRIGATORIAMENTE)
   qrr.Edit;
   // Cria um campo do tipo TBlobStream e carrega o conteúdo do campo
   // Blob do registro apontado na tabela
   Stm := qrr.CreateBlobStream(qrr.FieldByName(´xx´), bmReadWrite);
   // Atribui o conteúdo do TBlobStream ao TFileStream para que seja
   // possível salvá-lo em disco, com o nome apontado logo acima.
   fl.CopyFrom(Stm, Stm.Size);
   qrr.Post;

   Stm.Free;
   fl.Free;
end;


Qualquer poste a dúvida novamente.
t+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar