pessoal, como o titulo ja diz:
como criar backup do banco de dados firebird com jdbc e como restaurar?
por favor, me ajudem!
pessoal, como o titulo ja diz:
como criar backup do banco de dados firebird com jdbc e como restaurar?
por favor, me ajudem!
Você pode usar os métodos contidos no proprio jar do firebird.
Utilizo o “jaybird-full-2.1.6.jar”.
Backup
try {
FBBackupManager backup = new FBBackupManager();
backup.setUser(usuario);
backup.setPassword(senha);
backup.setDatabase(caminhoBanco);
backup.setPort(porta);
backup.setHost(ip);
backup.setBackupPath("c:/teste/arquivo.bkp"); // caminho arquivo backup
backup.setVerbose(true);
backup.setLogger(new FileOutputStream("c:/teste/log.rtf")); // caminho log
backup.backupDatabase();
} finally {
respostaBKP.close();
}
Restore
try {
FBBackupManager restore = new FBBackupManager();
restore.setUser(usuario);
restore.setPassword(senha);
restore.setDatabase(caminhoBanco);
restore.setHost(ip);
restore.setBackupPath("c:/teste/arquivo.bkp"); // caminho arquivo backup
restore.setVerbose(true);
restore.setLogger(new FileOutputStream("c:/teste/log.rtf")); // caminho log
restore.setRestoreReplace(true);
restore.restoreDatabase();
} finally {
respostaRestore.close();
}
Espero que tenha ajudado.
so existe essa forma?
try{
Class.forName(driver); //Carrega o driver
Connection conn = (Connection) DriverManager.getConnection(url, usuario, senha);
String sql = "SELECT * FROM membros2 INTO OUTFILE '" + ff + "'";
java.sql.PreparedStatement stmt = conn.prepareStatement(sql);
stmt.execute();
stmt.close();
}
tipo no MySql eu consigo fazendo backup assim, teria algo parecido para firebird?
so existe essa forma?try{ Class.forName(driver); //Carrega o driver Connection conn = (Connection) DriverManager.getConnection(url, usuario, senha); String sql = "SELECT * FROM membros2 INTO OUTFILE '" + ff + "'"; java.sql.PreparedStatement stmt = conn.prepareStatement(sql); stmt.execute(); stmt.close(); }e ai pessoal?
tipo no MySql eu consigo fazendo backup assim, teria algo parecido para firebird?
Você pode usar os métodos contidos no proprio jar do firebird.
Utilizo o “jaybird-full-2.1.6.jar”.Backup
try { FBBackupManager backup = new FBBackupManager(); backup.setUser(usuario); backup.setPassword(senha); backup.setDatabase(caminhoBanco); backup.setPort(porta); backup.setHost(ip); backup.setBackupPath("c:/teste/arquivo.bkp"); // caminho arquivo backup backup.setVerbose(true); backup.setLogger(new FileOutputStream("c:/teste/log.rtf")); // caminho log backup.backupDatabase(); } finally { respostaBKP.close(); }Restore
try { FBBackupManager restore = new FBBackupManager(); restore.setUser(usuario); restore.setPassword(senha); restore.setDatabase(caminhoBanco); restore.setHost(ip); restore.setBackupPath("c:/teste/arquivo.bkp"); // caminho arquivo backup restore.setVerbose(true); restore.setLogger(new FileOutputStream("c:/teste/log.rtf")); // caminho log restore.setRestoreReplace(true); restore.restoreDatabase(); } finally { respostaRestore.close(); }Espero que tenha ajudado.
consegui fazer apenas o backup mas restaurar nao consegui, da problema! esta certo esse codigo?
Sim, esta certo.
So que para restaurar, não pode ter ninguem conectado ao banco.
Se estiver uma conexão aberta, da erro mesmo.
Sim, esta certo.
So que para restaurar, não pode ter ninguem conectado ao banco.
Se estiver uma conexão aberta, da erro mesmo.
entendi, so naum entendi essa parte do codigo
finally {
respostaRestore.close();
}
finally {
respostaBKP.close();
}
me explica isso naum entedi! esse tal de respostaBKP ??? respostaRestore ???
Ops, mals. É que quando postei, estava testando o código.
Seria isso:
OutputStream respostaBKP = new FileOutputStream("c:/teste/log.rtf");
try {
String porta = configBD.getCbd_porta();
FBBackupManager backup = new FBBackupManager();
backup.setUser(usuario);
backup.setPassword(senha);
backup.setDatabase(pathBanco);
backup.setPort(porta);
backup.setHost(ip);
backup.setBackupPath("c:/teste/arquivo.bkp");
backup.setVerbose(true);
backup.setLogger(respostaBKP);
backup.backupDatabase();
} finally {
respostaBKP.close();
}
Depois leio o arquivo de log gerado e apresento na tela.
Ops, mals. É que quando postei, estava testando o código. Seria isso:OutputStream respostaBKP = new FileOutputStream("c:/teste/log.rtf"); try { String porta = configBD.getCbd_porta(); FBBackupManager backup = new FBBackupManager(); backup.setUser(usuario); backup.setPassword(senha); backup.setDatabase(pathBanco); backup.setPort(porta); backup.setHost(ip); backup.setBackupPath("c:/teste/arquivo.bkp"); backup.setVerbose(true); backup.setLogger(respostaBKP); backup.backupDatabase(); } finally { respostaBKP.close(); }Depois leio o arquivo de log gerado e apresento na tela.
funcionou, so que com uma excessao , se eu uso o banco de dados, exemplo: select... bla bla bla conectado pelo FBDriver , ele depois para de funcionar , foi o caso que vc mencionou , naum pode ter nenhuma conexao aberta com o banco , e ai naum tem alguma coisa que fecha todas a conexoes com o banco antes de fazer o restore? pq o backuo funfou!
esse e o meu codigo!
try {
OutputStream respostaRestore;
respostaRestore = new FileOutputStream(log);
FBBackupManager restore = new FBBackupManager();
restore.setUser(usuario);
restore.setPassword(senha);
restore.setDatabase(caminhoBanco);
restore.setPort(porta);
restore.setHost(ip);
restore.setBackupPath(ff); // caminho arquivo backup
restore.setVerbose(true);
restore.setLogger(respostaRestore); // caminho log
restore.setRestoreReplace(true);
restore.restoreDatabase();
respostaRestore.close();
JOptionPane.showMessageDialog(null,"Restaurado com sucesso!","Restaurado com sucesso!",JOptionPane.CANCEL_OPTION);
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null,"Problema com o banco de dados","Problema com o banco de dados",JOptionPane.CANCEL_OPTION);
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null,"file","file",JOptionPane.CANCEL_OPTION);
JOptionPane.showMessageDialog(null,"Problema com o arquivo","Problema com o arquivo",JOptionPane.CANCEL_OPTION);
}
catch (IOException ex) {
JOptionPane.showMessageDialog(null,"ex","ex",JOptionPane.CANCEL_OPTION);
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
Como vc está sendo feita a sua conexão?
Utilizando algum pool?
Teria como postar a classe?
Como vc está sendo feita a sua conexão?Utilizando algum pool?
Teria como postar a classe?
to usando JDBC para comunicação com o firebird! quando uso o codigo naum funciona a restauração, quando naum uso funciona.
String driver = "org.firebirdsql.jdbc.FBDriver"; //Classe do driver JDBC
String url = "jdbc:firebirdsql:localhost/3050:C:\\Program Files\\Sistema de Igreja\\bd\\IGREJA.GDB";
String usuario = "SYSDBA"; //Usuário do banco
String senha = "masterkey"; //Senha de conexão
try {
Class.forName(driver); //Carrega o driver
//Obtém a conexão com o banco
Connection conn;
conn = (Connection) DriverManager.getConnection(url, usuario, senha);
String sql = "select max(codigo) from cadastromembros";
java.sql.Statement rec = conn.createStatement();
ResultSet rs = rec.executeQuery(sql);
if (rs.next()){
int vl = rs.getInt(1);
int x = vl + 1;
cpCodigo.setText(Integer.toString(x));
rs.close();
}
}
catch (ClassNotFoundException ex) {
JOptionPane.showMessageDialog(null,"Não foi possível carregar o driver.","Não foi possível carregar o driver.",JOptionPane.CANCEL_OPTION);
ex.printStackTrace();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null,"Problema com o banco de dados","Problema com o banco de dados",JOptionPane.CANCEL_OPTION);
ex.printStackTrace();
}
Pelo que vi, está faltando vc fechar a conexao após a consulta.
...
//Obtém a conexão com o banco
Connection conn;
conn = (Connection) DriverManager.getConnection(url, usuario, senha);
...
rs.close();
conn.close();
...
Pelo que vi, está faltando vc fechar a conexao após a consulta.... //Obtém a conexão com o banco Connection conn; conn = (Connection) DriverManager.getConnection(url, usuario, senha); ... rs.close(); conn.close(); ...
ah ta, entaum vou fazer os teste ai encerro esse assunto funcionado, provavelmente funcione!, valew!
Pelo que vi, está faltando vc fechar a conexao após a consulta.... //Obtém a conexão com o banco Connection conn; conn = (Connection) DriverManager.getConnection(url, usuario, senha); ... rs.close(); conn.close(); ...ah ta, entaum vou fazer os teste ai encerro esse assunto funcionado, provavelmente funcione!, valew!
blz, resolvido valew!