Amigos, tenho uma dúvida que deve ser bem simples de se resolver, mas não estou conseguindo identificar o problema.
É o seguinte. Tenho 3 classes: A main, Pessoa e o DAO. O objetivo do programa é receber um nome e adiciona-lo ao banco de dados. Criei estas 3 classes mas não consigo identificar esse erro de NullPointerException.
Segue abaixo minhas 3 classes.
package testedao;
public class Pessoa {
private String nome;
private DAO db= new DAO();
public Pessoa() {
}
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome=nome;
}
//Metodo passa tabelas e campos para DAO inserir no Banco
public void inserePessoa(){
//PREPARA OS DADOS PARA O DAO
String tb, cps, vals;
tb= "pessoa";
cps= "(nome)";
vals= "('"+nome+"')";
db.insere(tb, cps, vals);
}
}
package testedao;
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/teste","root","123");
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();
}
}
package testedao;
public class Main {
public Main() {
}
public static void main(String[] args) {
Pessoa p= new Pessoa();
//Insere um nome
p.setNome("Vitor");
System.out.println("Nome retornado: "+ p.getNome());
p.inserePessoa();
}
}
init:
deps-jar:
Compiling 3 source files to C:\Documents and Settings\Negrão\TesteDAO\build\classes
compile:
run:
Nome retornado: Vitor
Exception in thread "main" java.lang.NullPointerException
at testedao.DAO.insere(DAO.java:44)
at testedao.Pessoa.inserePessoa(Pessoa.java:36)
at testedao.Main.main(Main.java:23)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
A Linha 44 da Classe DAO é o : upd= set.executeUpdate(q);
Vlw