DAO+Bean+DB+NullPointerException

7 respostas
rodrigodsw2005

Pessoal estou com um problema de 2 dia que eu não consigo resolver, ja estou ficando louko !
seque o código:

private String nome;
private String telefone;
    public BeanCadastro() {}
    
    public String getNome() { return nome;  }
    public String getTelefone() { return telefone;  }
    
    public void setNome(String nome) {  this.nome = nome; }
    public void setTelefone(String telefone) { this.telefone = telefone; }
}
DAO
public class DaoCadastro {
    private PreparedStatement inserir;

    public  DaoCadastro()throws SQLException{  }
    public boolean  Salvar()throws SQLException {

    try{
inserir = db.getConn().prepareStatement("insert into cadastro (nome,telefone) values (?,?)");
  }catch (Exception e){
      e.printStackTrace();
  }
  

                 Database db= new Database();
                 BeanCadastro bc    = new BeanCadastro();
                 inserir.setString (1,bc.getNome()); 
                 inserir.setString (2, bc.getTelefone());
  
                return inserir.execute(); //manda atualizar
    }
  }
Database
public class Database {

    private String driver = "com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://localhost/teste";
    private String username = "root";
    private String password = "";
    private Connection conn;

    public Database(){
            
        try {
            Class.forName(this.driver);
            this.conn = DriverManager.getConnection(url,username,password);
        
        } catch (ClassNotFoundException e){
            System.out.println("Não foi possivel encontrar o driver de banco: " + e.getMessage());
        } catch(SQLException e){
            System.out.println("Erro ao conectar com o banco: " + e.getMessage());
        }
    }    

    public Connection getConn() {
        return conn;
    }}
Main
BeanCadastro b = new BeanCadastro();
        DaoCadastro dao = new DaoCadastro();
        b.setNome("Rodrigo");
        b.setTelefone("36232337");
       dao.Salvar();
ERRO !
Exception in thread "main" java.lang.NullPointerException
        at teste.DaoCadastro.Salvar(DaoCadastro.java:28)
        at teste.Main.main(Main.java:20)
Java Result: 1
EXECUTADO COM SUCESSO (tempo total: 0 segundos)

Pq esta dando esse erro ??? na onde eu estou errando ....

Obrigado :)

7 Respostas

M

O erro está aqui vc não tem uma instância da Classe BD

inserir = db.getConn().prepareStatement(“insert into cadastro (nome,telefone) values (?,?)”);

mude seu código deixando assim

Database db = new Database();
    	 inserir = db.getConn().prepareStatement("insert into cadastro (nome,telefone) values (?,?)");
P

tem sim, aqui

Database db= new Database();

o problema é a falta de inicialização do objeto inserir. Por isso o NullPointerException

P

mal ae !!!

falei besteira ! desculpem-me ! :oops:

Na verdade o trecho Database db= new Database();
deveria vir antes do bloco do try

M

Dê uma estudada na apostila que existe no site caelum, concerteza ela te ajudará bastante.
:arrow: http://www.caelum.com.br/caelum/apostila/caelum-java-web-fj21.pdf

rodrigodsw2005

isso aí !!! essa gurizada é FOD… !!! tinha que colocar mesmo a instancia do DB do lado de fora do TRY {}

Mas olha o que apareceu no mysql: ;(

mysql> select * from cadastro;
±-----------±-----±---------+
| idcadastro | nome | telefone |
±-----------±-----±---------+
| 1 | NULL | NULL |
±-----------±-----±---------+

acho que deveria aparecer no “Rodrigo” “36232337”… mas não apareceu pq?

Henrik
BeanCadastro bc    = new BeanCadastro();
      inserir.setString (1,bc.getNome()); 
      inserir.setString (2, bc.getTelefone());

Voce instanciou BeanCadastro, mas nao colocou nada nele.

BeanCadastro bc    = new BeanCadastro();
      bc.setNome("teste");
      bc.setTelefone("32545445");
      inserir.setString (1,bc.getNome()); 
      inserir.setString (2, bc.getTelefone());
rodrigodsw2005

Pior que eu instanciei sim… mas está na classe main. Por isso não entendi esse NULL … Alguem sabe por aí??? pq acontece isso?

Criado 28 de julho de 2007
Ultima resposta 28 de jul. de 2007
Respostas 7
Participantes 4