Problema Inserir Contatos (fj-21)

Boa Tarde, estou usando a apostila fj-21 para aprender sobre a programação web, mas estou usando o banco de dados oracle 11g Express.

Meu problema e que, a conexão com o oracle funciona perfeitamente, criei as classes para conexao e para adicionar contatos na tabela, mas quando testo a classe que adiciona os contatos aparece o maldito erro:

Exception in thread “main” java.lang.NullPointerException
at br.com.wacontactcenter.jdbc.dao.ContatoDAO.adiciona(ContatoDAO.java:25)
at br.com.wacontactcenter.jdbc.teste.TestaInsere.main(TestaInsere.java:19)

A minha classe ContatoDAO e TestaInsere esta igualzinho a da apostila, e como a conexão com o oracle esta funcionando corretamente, não sei o que possa estar acontecendo, se alguem puder me ajudar agradeceria muito.

[code]package br.com.wacontactcenter.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import br.com.wacontactcenter.jdbc.modelo.Contato;
import Conexao.connection;

public class ContatoDAO {

private Connection connection;

public void contatoDAO() {
	this.connection = new connection().getConexao();
}

 public void adiciona(Contato contato) {
     String sql = "insert into contatos " +
             "(nome,departamento,senha)" +
             " values (?,?,?)";
 
     try {
         // prepared statement para inserção
         PreparedStatement stmt = connection.prepareStatement(sql);
 
         // seta os valores
         stmt.setString(1,contato.getNome());
         stmt.setString(2,contato.getDepartamento());
         stmt.setInt(3,contato.getSenha());
         
         // executa
         stmt.execute();
         stmt.close();
     } catch (SQLException e) {
         throw new RuntimeException(e);
     }
 }

}[/code]

[code]package br.com.wacontactcenter.jdbc.teste;
import br.com.wacontactcenter.jdbc.dao.ContatoDAO;
import br.com.wacontactcenter.jdbc.modelo.Contato;

public class TestaInsere {

public static void main(String[] args) {

	Contato contato = new Contato();

	contato.setNome("Fellipe");
	contato.setDepartamento("TI-Desenvolvimento");
	contato.setSenha(181);

	// grave nessa conexão!!!
	ContatoDAO dao = new ContatoDAO();

	// método elegante
	dao.adiciona(contato);

	System.out.println("Gravado!");
}

}
[/code]

[code]package br.com.wacontactcenter.jdbc.modelo;

public class Contato {
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDepartamento() {
return departamento;
}
public void setDepartamento(String departamento) {
this.departamento = departamento;
}
public int getSenha() {
return senha;
}
public void setSenha(int senha) {
this.senha = senha;
}
private Long id;
private String nome;
private String departamento;
private int senha;

}
[/code]

Eu to usando o jdk7 e na hora que usei o SQLDevelopment da oracle disse q o programa poderia nao funcionar corretamente, mas como a conexão funcionou corretamente eu não sei se tem algo haver, e o nome da minha conexão do oracle se chama " Intranet ", passei essas informações pois não sei o que pode estar acontecendo.

Obs: Desculpem os erros de português.

Cara uma sugestão muito boa, e que facilitaria muito para vc.
Use um framework de persistência, tipo hibernate.
muito mais fácil.

Entendo, começei o curso da caelum mas ainda não estou na parte da web, fiz dessa maneira pra poder entender os códigos, e tambem ainda não sei nada de hibernate, mas eu vo usa-lo sim, vlw pela dica

que erro que deu???

[]s,

O que está errado é o construtor. Ao invés de:

public void contatoDAO() {

a declaração deve ser:

public ContatoDAO() {

Quando executo a classe " TestaInsere", acontece o seguinte erro:

Exception in thread “main” java.lang.NullPointerException
at br.com.wacontactcenter.jdbc.dao.ContatoDAO.adiciona(ContatoDAO.java:25)
at br.com.wacontactcenter.jdbc.teste.TestaInsere.main(TestaInsere.java:19)

vc fez oque nosso amigo indicou??

seu construtor está errado…só use public ContatoDAO(){…}

Fiz o que vcs disseram e deu certo, agora o erro acontece pois tem 1 campo chamado ID no banco que esta Nulo, mas como é chave primária ele não pode ficar null e eu nao coloquei ele pra ser auto incrementavel, agora tenho que saber como faço isso rssrsrrs

Muito obrigado pela ajuda gente!!

mas não precisa ser somente para web.

ou…vamos lá

está errado seu construtor…

construtor tem que ser do mesmo jeito que vc escreve sua classe… ou seja… public ContatoDao(){…) em maiusculo…

Fiz o que vcs disseram e deu certo, agora o erro acontece pois tem 1 campo chamado ID no banco que esta Nulo, mas como é chave primária ele não pode ficar null e eu nao coloquei ele pra ser auto incrementavel, agora tenho que saber como faço isso rssrsrrs

Muito obrigado pela ajuda gente!!

vai no banco e da um update na tabela…colocando a coluna id como auto imcremento

falow

sim sim, vo fazer isso, e que como começei agora a usar o oracle, ainda to aprendendo a fazer essas coisas rsrsrs!!

Exato o problema era o construtor.

Quanto ao auto-incremento o Oracle não possui. Você vai precisar utilizar uma Sequence.

Este tópico pode te ajudar. http://www.guj.com.br/java/66010-resolvido-como-fazer-o-oracle-entender-que-eu-quero-utilizar-uma-sequence