quarta-feira, dezembro 29, 2004

PowerBuilder - Armazenando/recuperando arquivos em um Banco de Dados

Este artigo tem como objetivo armazenar e recuperar qualquer tipo de arquivo em um banco de dados utilizando a ferramenta de desenvolvimento PowerBuilder.

//******************Armazenando arquivos***********************//
//verifica se o arquivo já existe, se existir, realiza o updade, caso contrario, realizar o insertlong ll_row, ll_codigo, ll_file, ll_tamblob lblob_arquivo, lBlob_final
ll_codigo = long (sle_1.text)
//Carrega o arquivoll_file = FileOpen ( sle_2.text , StreamMode! , Read! , LockRead!)if ll_file = -1 then messagebox("Erro","Ocorreu um erro na abertura do arquivo",stopsign!) returnend if
lBlob_final = blob('')ll_tam = fileread(ll_file, lblob_arquivo)
do while (ll_tam > 0) lBlob_final = lBlob_final + lblob_arquivo ll_tam = fileread(ll_file, lblob_arquivo)loop
fileclose(ll_file)
select count(*)into :ll_rowfrom tb_zipwhere codigo = :ll_codigo ;
if sqlca.sqlcode <> 0 then messagebox("Erro no count",sqlca.sqlerrtext,stopsign!) returnend if
if ll_row = 0 then insert into tb_zip(codigo,arquivo) values (:ll_codigo, ''); if sqlca.sqlcode <> 0 then messagebox("Erro no Insert",sqlca.sqlerrtext,stopsign!) return end ifend if
updateblob tb_zipset arquivo = :lBlob_finalwhere codigo = :ll_codigo ;
if sqlca.sqlcode <> 0 then messagebox("Erro no update",sqlca.sqlerrtext,stopsign!) returnend if
messagebox("Sucesso","Arquivo gravado com sucesso!")

//**********************Recuperando Arquivo **********************//
//verifica se o arquivo já existe, se existir, realiza o updade, caso contrario, realizar o insertlong ll_row, ll_codigo, ll_file, ll_tamblob lblob_arquivo, lBlob_finalstring ls_path, ls_file
ll_codigo = long (sle_1.text)
//Verifica se o arquivo existeselect count(*)into :ll_rowfrom tb_zipwhere codigo = :ll_codigo ;
if sqlca.sqlcode <> 0 or ll_row = 0 then messagebox("Erro ao localizar arquivo","Arquivo inexistente",stopsign!) returnend if

if GetFileSaveName("Inform o nome do arquivo ZIP",ls_path, ls_file,"ZIP","Arquivo ZIP (*.zip),*.zip") = -1 then messagebox("Erro","Erro ao Selecionar Arquivo",exclamation!) returnend if
//Busca o arquivo no bancoselectblob arquivointo :lBlob_finalfrom tb_zipwhere codigo = :ll_codigo ;
if sqlca.sqlcode <> 0 or ll_row = 0 then messagebox("Erro ao localizar arquivo","Arquivo inexistente",stopsign!) returnend if
//Carrega o arquivoll_file = FileOpen ( ls_path , StreamMode! , write! , Lockwrite!, Replace!)if ll_file = -1 then messagebox("Erro","Ocorreu um erro na abertura do arquivo",stopsign!) returnend if
do while (len(lBlob_final) > 0) lblob_arquivo = blobmid(lBlob_final,1,32000) filewrite(ll_file,lblob_arquivo) lBlob_final = blobmid(lBlob_final,32001)loop
fileclose(ll_file)

messagebox("Sucesso","Arquivo recuperad com sucesso!")

Nenhum comentário: