Fórum EXE no Banco de Dados !! #345305
29/08/2007
0
Estou com uma dúvida, gostaria de salvar o EXE do meu sistema no meu banco de dados(SQL Server 2005).
Pois preciso fazer uma ´Atualizador´ para o meu sistema, msa não quero ficar preso a nenhum caminho de rede.
Nunca vi algo parecido, isso é possivel ?
E qual deverá ser o tipo do meu campo no SQL Server quando eu cria-lo? Image? Binary?
Abraço a todos !
Maic
Maic.rio
Curtir tópico
+ 0Posts
29/08/2007
Raserafim
então pelo nome, me parece que você deverá utiliar o Binary.
e no Delphi pode recuperar as informações deste campo (o arquivo EXE) através da função Stream
Gostei + 0
30/08/2007
Maic.rio
Caso alguem tenha algum modelo para me mostrar como deve salvar no banco através do delphi.
Pois algumas vezes que fiz, com um campo binary, ele grava apenas o caminho do arquivo.
Abraços !
Maic
Gostei + 0
30/08/2007
Maic.rio
Só estou conseguindo retornar o caminho do EXE e não o Exectavel em si.
Delphi 7 que estou utilizando;
Abraços !!
Maic
Gostei + 0
05/09/2007
Maic.rio
Ainda não consegui resolveer este problema !
Abraço a todos !
Gostei + 0
05/09/2007
Emerson Nascimento
TBlobField(SeuCampoBlob).SaveToFile( CaminhoDestinoCompletoDoSeuArquivo ); <- salva o conteúdo do campo no HD (ou CD, FDD, DVD...)
eu recomendo que você tenha um campo onde possa guardar ao menos o nome do arquivo.
Da forma acima você pode guardar qualquer arquivo: .doc, .xls, .dwg... qualquer coisa.
Lembre-se que o campo tem que ser um BLOB que suporte dados binários.
Gostei + 0
06/09/2007
Maic.rio
Estou fazendo da seguinte forma:
TBlobField(DMGestaoRisco.cdsGestaoRiscoAnexo).LoadFromFile(OpenDialog.FileName);
Já fiz teste com meu campo na Base de dados como Image e Binary.
Quando meu campo no DB está como Image ocorre sempre o seguinte erro:
[img:9d4ae483cf]http://img526.imageshack.us/img526/8329/erroun2.th.jpg[/img:9d4ae483cf]
Quando está como Binry ocorre um Acess Violation !
Abraços,
Maic[img][/img]
Gostei + 0
06/09/2007
Maic.rio
´Bitmap image is not valid´
Abraços,
Maic
Gostei + 0
12/09/2007
Maic.rio
Será que alguem conseguiu algo ?
Abraços e desculpe o flame !
Maic
Gostei + 0
12/09/2007
Maic.rio
Acho que por isso esta acontecendo esse tipo de erro.
Abraços
Gostei + 0
12/09/2007
Emerson Nascimento
Gostei + 0
12/09/2007
Maic.rio
Quando coloco com Binary, e faço a rotina que me passou, recebo um acess violation !
Abraços.
Maic
Gostei + 0
14/12/2007
Luciano.lirio
Srs.,
apesar desde assunto ser bem antigo não encontrei resposta para ele...
Bom, meu problema foi gravar uma imagem no meu banco de dados, da forma normal lendo o jpg convertendo para bitmap ficou muito grande então resolvi gravar como arquivo, como arquivo deu erro de conversão, ou seja, o campo tipo imagem e importando como Blob deu erro de conversão...
pesquisando na net encontrei essa forma de importar qualquer tipo de arquivo para um campo image do sql server sem que apareca erro de conversão...
Se alguem tiver uma forma melhor de fazer isso nos informe...
Dica do Site: [url]http://www.ramosdainformatica.com.br/art_recentes01.php?CDA=576[/url]
// Carrega um arquivo
TMemoField(qryFechamento.FieldByName(´ImgProtocolo´)).LoadFromFile(Abrir.FileName);
// Salva para Arquivo
if TMemoField(qryFechamento.FieldByName(´ImgProtocolo´)).BlobSize > 0 then
TMemoField(qryFechamento.FieldByName(´ImgProtocolo´)).SaveToFile(´c:\Protocolo.exe´);
Gostei + 0
14/12/2007
Docdoc
Vc quer guardar na base de dados o executável, mas 1 grande questão que se põe:
O executável está em execução ?
Bem se estiver vc terá que mapear o arquivo na memoria, copiar esta memoria para um arquivo temporário, ai sim mandá-lo para a base de dados.
Para gravar o arquivo na base de dados não é dificil, basta ter um campo BLOB, que são campos binarios que podem conter arquivo com gigabytes.
Para se usar um campo BLOB, vc terá que primeiro abrir o arquivo em Stream, criar um Stream para o campo, e simplesmente copiar de um stream para o outro.
Gostei + 0
14/12/2007
Docdoc
O exemplo é para uma imagem mas poderá ser usado para qualquer coisa, como por ex.: um arquivo ou som etc...
procedure GravarFotoDB;
var
jpg: TJPEGImage;
bmp : TBitmap;
st: TStream;
fs: TFileStream;
begin
//cria a imagem em jpg, copiando neste exemplo de um bitmap
bmp := TBitmap.Create;
try
bmp.loadfromfile("minhaimagem.bmp");
with TJPEGImage.Create do
try
Assign(bmp);
Compress;
SaveToFile("minhaimagem.jpg"); //<---atenção agora é um jpeg
finally
Free;
end;
finally
bmp.free;
end;
//agora abre a imagem jpeg em um stream
fs := TFileStream.Create( "minhaimagem.jpg", fmOpenRead);
try
//tbFoto é a tabela onde vamos guardar a foto.
try
//pomos a tabela em edição, inserção
tbFoto.Insert;
//criamos o stream do campo blob, que no caso se chama campo ´imagem´
//aqui que está o segredo, agora fica tudo + fácil, pois temos dois streams
//o primeiro é o fs,qque é o stream de arquivo que criamos ao abrirmos o
//arquivo jpeg. O outro é o stream do blob...
st := tbFoto.CreateBlobStream(tbFoto.FieldByName(´imagem´), bmWrite);
//basta então agora copiar de um pro outro
st.CopyFrom(fs, fs.Size);
//fechamos a edição do registro
tbFoto.Post;
except
//no caso de excessão então a tabela volta em estado browser
tbFoto.Cancel;
end;
finally
st.free;
fs.free;
DeleteFile(filename);
end;
end;
Penso que é auto explicativo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)