DAO não está inserindo no banco

Bom amigos…

Fiz uma estutura simples com o DAO e a Classe FUNCIONARIO. Conectei atraves do NetBeans, tudo perfeito. ok.
Mas na hora de compilar recebo um erro de NULL POINTER EXCEPTION q está me tirando do sério…
Se alguem puder dar uma solução… segue abaixo o programa.

CLASSE FUNCIONARIO

[code]package cadastrofuncionario;

/**
*

  • @author Negrão
    */
    public class Funcionario {
    private String nome;
    private int rg;
    private String cpf;
    private int nasc;
    private char sexo;
    private double salFunc;
    DAO db;

    public Funcionario() {

    }

    public String getNome() {
    return nome;
    }

    public void setNome(String nome) {
    this.nome = nome;
    }

    public int getRg() {
    return rg;
    }

    public void setRg(int rg) {
    this.rg = rg;
    }

    public String getCpf() {
    return cpf;
    }

    public void setCpf(String cpf) {
    this.cpf = cpf;
    }

    public int getNasc() {
    return nasc;
    }

    public void setNasc(int nasc) {
    this.nasc = nasc;
    }

    public char getSexo() {
    return sexo;
    }

    public void setSexo(char sexo) {
    this.sexo = sexo;
    }

    public double getSalFunc() {
    return salFunc;
    }

    public void setSalFunc(double salFunc) {
    this.salFunc = salFunc;
    }

    public void insereFuncionario(){
    String tb= “func”;
    String cp= “(nmFunc)”;
    String vls= “(’”+nome+"’)";
    db.insere(tb, cp, vls);

    }
    }[/code]

CLASSE DAO

[code]package cadastrofuncionario;
import java.sql.*;

public class DAO {

Connection con;
Statement st;
ResultSet res;
int upd;
StringBuilder msg= new StringBuilder();

public DAO() {
}

public void conecta(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        con= DriverManager.getConnection("jdbc:mysql://localhost/projeto","","");
        st= con.createStatement();
        
    }catch(ClassNotFoundException e){
        msg.append("Erro Driver");
    }
    catch(SQLException e){
        msg.append("Não conectou no banco");
    }
} // FIM CONECTA

public void insere(String tb, String campos, String vals){
    conecta();
    try{
    String q= "insert into "+tb+" "+campos+ " values "+ vals;
    
    //Executar o SQL
    upd= st.executeUpdate(q);
    
    // Teste do banco
    if (upd!=0)
        msg.append("Insercao OK!");
    else
        msg.append("Erro: Insercao");
    }catch(SQLException e){
        msg.append("Erro: SQL insercao");
    }
    desconecta();
}// FIM INSERE

public void desconecta(){
    try{
        con.close();
    }catch(SQLException e){
        msg.append("Erro Desconecta");
    }
} // FIM DESCONECTA

//RETORNAR MENSAGENS
public String getMsg(){
    return msg.toString();
}

}[/code]

CLASSE MAIN

[code]package cadastrofuncionario;

/**
*

  • @author Negrão
    */
    public class Main {

    /** Creates a new instance of Main */
    public Main() {
    }

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {
      Funcionario f= new Funcionario();
      DAO dbresp;
      f.setNome(“Sonia”);

      f.insereFuncionario();
      dbresp = new DAO();

    }

}[/code]

ERRO INFORMADO

Compiling 1 source file to C:\Documents and Settings\Negrão\CadastroFuncionario\build\classes compile: run: Exception in thread "main" java.lang.NullPointerException at cadastrofuncionario.Funcionario.insereFuncionario(Funcionario.java:81) at cadastrofuncionario.Main.main(Main.java:30) Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)

Linha 81 do erro

db.insere(tb, cp, vls);

Linha 30

f.insereFuncionario();

Você está criando a instancia do seu DAO depois do momento que vc precisa dele:

f.insereFuncionario();  
dbresp = new DAO();

Fora que a instancia que você está criando, não está sendo usada pela sua classe Funcionario

 public void insereFuncionario(){  
       String tb= "func";  
       String cp= "(nmFunc)";  
       String vls= "('"+nome+"')";  
       db.insere(tb, cp, vls);  
          
    } 

Faça a seguinte mudança no seu método insereFuncionario:

 public void insereFuncionario(){  
       String tb= "func";  
       String cp= "(nmFunc)";  
       String vls= "('"+nome+"')";  
       db = new DAO();
       db.insere(tb, cp, vls);  
          
    } 

Ola,

de uma olhada nesta apostila ve se ajuda:

Leia o capítulo de JDBC - java.sql

Boa sorte!

Eu instanciei o DAO dentro do metodo insereFuncionario.

Mas agora o NULLPOINTEREXCEPTION esta apontando tb no

upd= st.executeUpdate(q);

  NullPointerException indica que vc está tentando usar um objeto que vc ainda não instanciou. Dá uma lida com calma no seu código que vc deve estar comendo barriga em algum lugar aí.