Acessar variável do tipo Connection, em outra classe (Resolvido)

2 respostas
Andre_Rosa

Olá,

Tenho uma classe de conexão com um banco de dados Postgre. Essa é a classe:

Conexao.java:

package agendapost;

import java.sql.*;

public class Conexao {
    public static boolean Connected(){
        boolean result = false;

        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException ex) {
            System.out.print("JDBC Driver não encontrado!\n" + ex.getMessage());
        }

        Connection con = null;
        try {
            con = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/dados", "postgres", "123");
        } catch (SQLException ex) {
            System.out.println("\nFalha ao conectar ao banco de dados! \n" + ex.getMessage());
        }

        if (con != null){
            return true;
        } else {
            return false;
        }
    }
}

Pois bem. No formulário JFrame, preciso fazer um INSERT, e para isso, preciso referenciar o objeto Statement à variável do tipo Connection (o objeto con, no meu caso). Como eu poderia acessar essa variável, para dar o insert? Quero fazer algo como isso, no evento de um JButton:

Statement stm = Conexao.con.createStatement();
ResultSet rs = stm.executeQuery("INSERT INTO (NOME, ENDERECO, TELEFONE) VALUES (?,?,?)");

Alguém poderia me ajudar?

Outra dúvida: é uma boa prática, criar os objetos Statement e ResultSet toda vez que executar o ActionPerformed do JButton?

Obrigado!

2 Respostas

Andre_Rosa

Lembrando que consigo acessar o método Connected(), mas não a variável con.

Andre_Rosa

Resolvi da seguinte forma:

Na classe de conexão, criei um método para inserir:

public static void Inserir(String nome, String endereco, String telefone){
        try {
            PreparedStatement st = con.prepareStatement("INSERT INTO CONTATO (NOME, ENDERECO, TELEFONE) VALUES (?,?,?)");

            st.setString(1, nome);
            st.setString(2, endereco);
            st.setString(3, telefone);

            st.execute();
            st.close();

            JOptionPane.showMessageDialog(null, "Inserido com Sucesso!");

        } catch (SQLException ex) {
            System.out.println("Problemas ao inserir no banco. \n\n" + ex.getMessage());
        }

    }

E no ActionPerformed do JButton, coloquei:

if (Conexao.Connected()) Conexao.Inserir(txtNome.getText(), txtEndereco.getText(), txtTelefone.getText());

Funcionou perfeitamente.

Criado 5 de novembro de 2011
Ultima resposta 5 de nov. de 2011
Respostas 2
Participantes 1