Atualizador Java Firebird

3 respostas
B

Pessoal, bom dia
Estou com o seguinte problema, tenho que pegar um script sql (Firebird) e roda-lo em cima de uma base de dados através de um atualizador java.
Não tenho ideia de como fazer isso.
Para deixar claro vou dar um exemplo:
Clico no jar > abre o programa > pega o script>atualiza a base.

Desde já agradeço a atenção.

3 Respostas

R

Cara pelo que entendi você quer fazer essa operação em outra maquina que já tem o firebird rodando.
Então é só você configurar o a conexão do seu programa java para conectar nessa base de dados.
Primeiramente você precisara do driver jdbc para firebird, o qual você precisara importar para o seu projeto para que funcione.

Acredito que sera mais ou menos assim:

Para obter a conexao, crie uma classe chamada ConnectionFactory.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class ConnectionFactory {

    public static Connection getConnection (){
        
        try{
            
             Class.forName("org.firebirdsql.jdbc.FBDriver");
            Connection con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:caminho/banco.gdb", user, password);
                   return con;
            }catch (Exception e){
                e.printStackTrace();
                return null;
            
        }
    }

}

Não se esquece de importar o driver do firebird. No codigo acima onde aparece o DriverManager voce deve substituir caminho pelo local onde se encontra o bd do firebird ex: "c:/bancodedados/" e substitua banco.gdb pelo nome do seu banco. Substitua user pelo nome de usuario com acesso ao banco e password pela senha do usuario.

Para rodar o script crie uma classe roda script:

public class RodaScript {
    

    private Connection con;

    public RodaScript() {
        con = ConnectionFactory.getConnection();
    }

    public void Executa() {
        PreparedStatement stt;
        try {
            stt = con.prepareStatement("insert into clientes (nome, profissao) values ('Reinildes', 'programador')");
            stt.execute();

            stt.close();

        } catch (Exception e) {
            JOptionPane.showInputDialog("Caramba aconteceu um erro desconhecido!!");
        }
    }
    
}

Essa classe utiliza a conexão criada pela primeira classe e roda o script. Acho que deve ser mais ou menos asssim.
Substitua a string do metodo con.prepareStatement pelo seu script e deve rodar.

B

A questão é que é um arquivo .sql que contem todas as instruções :frowning: e ai como faço?

R

Então você vai precisar pegar isso de uma arquivo, tenta desse jeito:

/**
 *
 * @author reinildes
 */
public class RodaScript {

    private Connection con;

    public RodaScript() {
        con = ConnectionFactory.getConnection();
    }

    public void Executa() {
        PreparedStatement stt;
        try {
            String caminho = new String("/home/reinildes/");
            File f = new File(caminho, "script.sql");
            String scriptSql = "";


            Scanner s = new Scanner(f);

            while (s.hasNext()) {
                scriptSql += " " + s.next();
            }


            System.out.println(scriptSql);


            stt = con.prepareStatement(scriptSql);
            stt.execute();

            stt.close();

        } catch (Exception e) {
            JOptionPane.showInputDialog("Caramba aconteceu um erro desconhecido!!");
        }
    }
}

Substitua a variavel caminho pela localização do script sql que quer rodar e deve funcionar. O File recupera o arquivo e em seguida convertemos para string que sera utilizada no metodo con.prepareStatement(scriptSql).
Isso acho que agora foi!

Criado 25 de fevereiro de 2013
Ultima resposta 26 de fev. de 2013
Respostas 3
Participantes 2