Como gravar um executável no BLOB??
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???
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
Curtidas 0
Respostas
Sremulador
01/02/2006
Você pode utilizar o stream...
GOSTEI 0
Rtava
01/02/2006
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:
Qualquer poste a dúvida novamente.
t+
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+
GOSTEI 0