Duvida conexao JDBC, boa pratica!

2 respostas
rbroz85

boa tarde senhores,

queria tirar algumas duvidas:

eu criei uma classe de coneção com o banco com os metodos estaticos, entao... logo qunado eu inicio o programa ele ja abre 4 conexoes... sem eu mesmo chegar na classe onde eu chamo esse metodo estatico... porque? na clase onde eu chamo a coneçao esta assim:
private conn;
  public minha class(){
      this.conn = classedeconexao.abrirconexao();
  }

e no metodo...

public void meumetodo(){
   Connection con;
   try{
      con = this.conn;
   ...

classedeconexao.fechar(con);
}

entoa tipo... ele ta fechando e nao abre mais...

ps. esse metodo eu fico chamando ele dentro de um for... em outra classe

abraços

2 Respostas

A

cara seguinte, coloca ae as classes de conexao com o banco e as variaveis, você talves esteja iniciando os metodos de conexão na main.

vlws

rbroz85

pow uma classe de conectar padrao...

public class ConnectionFactory {
    
    /** Creates a new instance of ConnectFactory */
    public ConnectionFactory() {
    }
    
    public static Connection getConnection(){
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("?????", "????", "????");
            System.out.println("Connection JDBC Opened");
        } catch (SQLException ex) {
            System.out.println("Connection JDBC Opened");
            ex.printStackTrace();
            System.out.println("Connection JDBC not Started");
        } catch (ClassNotFoundException ex) {
            System.out.println("Connection JDBC - Class not Found");
            ex.printStackTrace();
        }
        return con;
    }
    
    public static void closeConnection(Connection conn, Statement stmt, ResultSet rs){
        close(conn, stmt, rs);
    }
    
    public static void closeConnection(Connection conn, Statement stmt){
        close(conn, stmt, null);
    }
    
    public static void closeConnection(Connection conn){
        close(conn, null, null);
    }
    
    private static void close(Connection conn, Statement stmt, ResultSet rs) {
        System.out.println("Connection JDBC Closed");
        try {
            if(rs != null) rs.close();
            if(stmt != null) stmt.close();
            if(conn != null) conn.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
}

eu so chamo ela na clasa consulta:

public class Consulta {
    
    private Connection conn;
    private Erros erros;
    private Escreve escreve;
    
    /** Creates a new instance of Consulta */
    public Consulta() {
        System.out.println("ENTREI AKI CONSULTA");

                this.conn = ConnectionFactory.getConnection();
    }

    public String getCodigo(String nome) {
        Connection conn = null;
        String sql = "select codigo from custo where nome = ?";
        ResultSet rs = null;
        String cod = "";
        try {
            conn = this.conn;
            PreparedStatement prep = (PreparedStatement) conn.prepareStatement(sql);
            prep.setString(1,nome);
            rs = (ResultSet) prep.executeQuery();
            while(rs.next())
                cod = rs.getString(1);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }finally{
            ConnectionFactory.closeConnection(conn);
        }
        
        return cod;
    }

ah ps: nao é web... é desktop

Criado 18 de junho de 2007
Ultima resposta 18 de jun. de 2007
Respostas 2
Participantes 2