Classe conexao

3 respostas
J

olá pessoal,

quero refatorar meu codigo, quando faço uma inserção, update etc.. eu crio uma conexão dentro de cada método, quero isolar a classe conexão, mas estou tendo dificuldade.

começei assim:

package rpa.Dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author josiel
 */
public class Conexao {

    String dbUrl = "jdbc:postgresql://localhost:5432/RPA";
     String dbDriver = "org.postgresql.Driver";
     String dbUser = "postgres";
     String dbSenha = "postgre";
     
    
        try {
    
     

    Class.forName ("org.postgresql.Driver");
            Connection con;
            con  = DriverManager.getConnection(dbUrl, dbUser, dbSenha);
            
}
    catch(SQLException ex){
    ex.printStackTrace();
    }
       
       
            
            
          
}

li uns tutoriais, mas esta dificil isolar esta classe. que se eu conseguir fazer isto, eu crio um algoritmo pra chamar apenas uma conexão em vez de ficar criando multiplas conexões....

eu acostumei a criar conexões deste modo:

public boolean inserir(AlunoVO aluno) {
        boolean retorno = false;
        Connection con = null; //DEFININDO OBJETO DE CONEXAO COM BD.
        try {
            try {
                Class.forName(dbDriver);
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
            }
            con = DriverManager.getConnection(dbUrl, dbUser, dbSenha);
            con.setAutoCommit(false);
            Statement stat = con.createStatement();
            String sql = "insert into aluno(matricula, primeiro_nome, ultimo_nome)" + "values ("
                    + aluno.getMatricula() + ",'"
                    + aluno.getPrimeiroNome() + "','" + aluno.getUltimoNome() + "')";

            System.out.println(sql);
            stat.executeUpdate(sql);
            con.commit();
            stat.close();
            con.close();
            retorno = true;

        } catch (SQLException e) {
            try {
                con.rollback();
                con.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }

        }
        return retorno;
    }

help-me?

3 Respostas

J

O primeiro código esta dando erro…

shenn

Cara, vc esta indo no caminho certo, na sua classe de conexao falta isso:

public class Conexao {  
  
     private final String dbUrl = "jdbc:postgresql://localhost:5432/RPA";  
     private final String dbDriver = "org.postgresql.Driver";  
     private final String dbUser = "postgres";  
     private final String dbSenha = "postgre";  
     private Connection conexao;  
      
    public Connection getConection()  {
        try {
            Class.forName(driver);
            conexao = DriverManager.getConnection(dbUrl, dbUser, dbSenha);  
        } catch (SQLException ex) {
            System.out.println("Erro SQLException: " + ex);
        } catch (ClassNotFoundException ex) {
            System.out.println("Erro ClassNotFoundException: " + ex);
        }  
        return conexao;
    }        
            
}

Esta classe vai retornar a conexao com o banco de dados…

Agora no seu DAO, no metodo construtor vc faz assim:

private Connection conexao;

public algumaCoisaDAO(){
     Conexao c = new conexao();
     conexao = c.getConnection();
}

AI sempre que vc instanciar a classe algumaCoisaDAO, vai pegar a conexao com o banco…

=D

Boa Sorteee!!

J

Valeu, deu certo xD,

só que o nome da variavel driver esta especificado errado:

Class.forName(driver);

e no lugar é:

Class.forName(dbDriver);

valeu, foi bem claro e objetivo =)

Criado 2 de novembro de 2012
Ultima resposta 2 de nov. de 2012
Respostas 3
Participantes 2