Criando backup numa aplicação java desktop com firebird duvidas!
3 respostas
nightcrowls
Estou desenvolvendo uma aplicação simples em Java Desktop + Hibernate, e banco de dados Firebird-2.5.0.25920_0_x64_RC2, o problema maior que estou querendo implementar a ferramenta backup nessa aplicação, as dificuldades maiores começar aparecer agora por não ter um conhecimento grande, e nem noção de como fazer um backup, se alguém poder me ajudar, a imagem mostra o modelo da interface backup que desejo desenvolver.
imagem da janela backup: http://cid-4caeef7c85b13343.office.live.com/self.aspx/.Public/Imagens%20Aplicativos/Backup.jpg
BACKUP:
1: Minha duvida é como eu posso utilizar o JFileChooser fj = new JFileChooser() no evento do btLocalActionPerformed passando o caminho URL(path) com o nome do backup desejado para salvar no local escolhido na ação do outro evento do botão (btBackupActionPerformed).
Mesma duvida para restaurar, como faço para selecionar o objeto num evento e passar para o outro evento restaurar fazer a restauração do BD?
Saudações jovem…
Segue o codigo que achei na net … e fiz algumas alterações:
/** * Codigo base de http://www.arquivodecodigos.net/dicas/java-usando-jfilechooser-para-escolher-um-diretorio-a-partir-de-um-jframe-485.html */importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassSelecionarBancoextendsJFrame{privateStringselecionado;privateStringrestaurado;publicSelecionarBanco(){super("Escolher diretorio e arquivo");Containerc=getContentPane();FlowLayoutlayout=newFlowLayout(FlowLayout.LEFT);c.setLayout(layout);JButtonbtnBackUp=newJButton("Escolher BackUp");JButtonbtnLocal=newJButton("Diretorio para BackUp");JButtonbtbtSeleciona=newJButton("Seleciona");JButtonbtbtRestaurar=newJButton("Restaura");JFileChooserfcaArquivo=newJFileChooser();btnBackUp.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){JFileChooserfcaArquivo=newJFileChooser();//somente arquivosfcaArquivo.setFileSelectionMode(JFileChooser.FILES_ONLY);intres=fcaArquivo.showOpenDialog(null);if(res==JFileChooser.APPROVE_OPTION){Filediretorio=fcaArquivo.getSelectedFile();JOptionPane.showMessageDialog(null,"Voce escolheu o arquivo: "+diretorio.getAbsolutePath());setRestaurado(diretorio.getAbsolutePath());}elseJOptionPane.showMessageDialog(null,"Voce nao selecionou nenhum arquivo.");}});btnLocal.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){JFileChooserfcaArquivo=newJFileChooser();//somente diretoriosfcaArquivo.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);intres=fcaArquivo.showOpenDialog(null);if(res==JFileChooser.APPROVE_OPTION){Filediretorio=fcaArquivo.getSelectedFile();JOptionPane.showMessageDialog(null,"Voce escolheu o diretorio: "+diretorio.getAbsolutePath());setSelecionado(diretorio.getAbsolutePath());}elseJOptionPane.showMessageDialog(null,"Voce nao selecionou nenhum diretorio.");}});btbtSeleciona.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){//Aqui voce insere seu metodo para gerar o backupJOptionPane.showMessageDialog(null,"Gerando o backUp em ".concat(getSelecionado()));}});btbtRestaurar.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){//Aqui voce insere seu metodo para restaurar o backupJOptionPane.showMessageDialog(null,"Restaurando o backUp de ".concat(getRestaurado()));}});c.add(btnBackUp);c.add(btnLocal);c.add(btbtSeleciona);c.add(btbtRestaurar);setSize(400,200);setVisible(true);}publicStringgetRestaurado(){returnrestaurado;}publicvoidsetRestaurado(Stringrestaurado){this.restaurado=restaurado;}publicStringgetSelecionado(){returnselecionado;}publicvoidsetSelecionado(Stringselecionado){this.selecionado=selecionado;}publicstaticvoidmain(String[]args){SelecionarBancosb=newSelecionarBanco();sb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}
Acho que o código fala por si …então tenta ai e qualquer duvida é só perguntar
T
Tchaco
nightcrowls, segue em anexo classe de backup.
Fiz teste aqui e funcionou.
Lembrando que as rotinas de backup e restore são do “jaybird-full-2.0.1.jar” e para realizar, não pode haver conexão no banco.
Você provavelmente está usando ou usará um pool de conexão, então, antes de executar os procedimento, ele deverá ser fechado.
nightcrowls
grato a todos que contribuiram com suas dicas, vou estar analisando e testendo as soluções, qalqer coisa postarei as duvidas aqi…