Erro no st.executeUpdate

5 respostas
adrianoseven

alguem poderia me ajudar com o erro:

Exception in thread "main" java.lang.NullPointerException

Criei uma classe Pessoa e estou conectando ela com o DAO. Bem simples. Apenas passando o "nome" para o método "insere" para fazer a conexão.
O Banco está acessando numa boa, as tabelas foram criadas tb... tudo roda numa boa... Só q acontece algo e não cadastra o bendito nome! :evil:
Se alguem puder dar uma força.... abraços.

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

Aqui está o metodo Insere na Classe Pessoa

public void inserePessoa(){
        //PREPARA OS DADOS PARA O DAO
        String tb, cps, vals;
        tb= "pessoa";
        cps= "(nome)";
        vals= "('"+nome+"')";
        db.insere(tb, cps, vals);

e a tão gloriosa MAIN!

public static void main(String[] args) {
        
        Pessoa p= new Pessoa();
        p.setNome("Vitor");
        System.out.println("Nome retornado: "+ p.getNome());
        p.inserePessoa();
O Erro q aparece:
Compiling 2 source files to C:\Documents and Settings\Negrão\TesteDAO\build\classes
compile:
run:
Exception in thread "main" java.lang.NullPointerException
        at testedao.DAO.insere(DAO.java:43)
        at testedao.Pessoa.inserePessoa(Pessoa.java:33)
        at testedao.Main.main(Main.java:26)
Nome retornado: Vitor
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

5 Respostas

L

qual é a linha 43 no DAO.java?

adrianoseven

a linha 43 é a

upd= st.executeUpdate(q);
rbamartins

cara, vc iniciou a instancia do seu statement?

st= con.createStatement();

se nao criou, crie antes de fazer st.executeUpdate(sql);

abraços.

adrianoseven

instanciei sim amigo.

Vou colocar a classe completa aqui depois… aí dá ter uma visão melhor da coisa… :smiley:

javolatra

Executa e encerra a tua st desse jeito:

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); st.execute; st.close; // 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

Criado 6 de janeiro de 2008
Ultima resposta 7 de jan. de 2008
Respostas 5
Participantes 4