NullPointerException em PreparedStatement

Olá, sou novo no fórum. Estou estudando a parte de jdbc antes de começar algo maior (como frameworks de ORM, etc.). Consegui me conectar e adicionar um registro no banco de dados (MYSQL 5.0.37), usando o JDK 1.5 Update 6 e o driver mysql connector 5.0.5. O problema é que quando eu tento fazer uma classe DAO, na hora de adicionar, ocorre uma NullPointerException. Só que o código pra adicionar É O MESMO que eu usava antes, pra conectar e adicionar, usando uma classe só! Vou colocar os códigos do “antes e depois”, pra se alguém puder, me corrija ou ajude:

ANTES

import java.sql.*;

public class TesteBD {

	public static void main (String args[]) {
		try {
			Connection conexao = ConnectionFactory.getConnection();

			Contato c = new Contato();
			c.setNome("Fulano");
			c.setEndereco("Rua da casa dele");
			c.setIdade(19);
			c.setTelefone("1199999999");
			c.setEmail("fulano@globo.com");
			System.out.println("Contato criado");

			PreparedStatement stmt = conexao.prepareStatement("insert into contato (nome,endereco,idade,telefone,email) values (?,?,?,?,?);");

			stmt.setString(1,c.getNome());
			stmt.setString(2,c.getEndereco());
			stmt.setInt(3,c.getIdade());
			stmt.setString(4,c.getTelefone());
			stmt.setString(5,c.getEmail());

			stmt.executeUpdate();
			stmt.close();

			System.out.println("Contato adicionado");

		}
		catch (SQLException e) {
			e.printStackTrace();
		}
	}

}

DEPOIS

[code]import java.sql.*;

public class TestaDAO {

public static void main (String args[]) {
	try {
		Connection conexao = ConnectionFactory.getConnection();

		Contato c = new Contato();
		c.setNome("Fulano");
		c.setEndereco("Rua da casa dele");
		c.setIdade(19);
		c.setTelefone("1199999999");
		c.setEmail("fulano@globo.com");
		System.out.println("Contato criado");

		ContatoDAO dao = new ContatoDAO();
		dao.adiciona(c);

	}
	catch (Exception e) {
		e.printStackTrace();
	}
}

}[/code]

Classe ContatoDAO

[code]import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;

public class ContatoDAO {

private Connection conexao;
private PreparedStatement stmt;

public void ContatoDAO() throws SQLException {
	this.conexao = ConnectionFactory.getConnection();
}

public void adiciona(Contato contato) throws Exception {
	stmt = this.conexao.prepareStatement("insert into contato (nome,endereco,idade,telefone,email) values (?,?,?,?,?);");

	stmt.setString(1,contato.getNome());
	stmt.setString(2,contato.getEndereco());
	stmt.setInt(3,contato.getIdade());
	stmt.setString(4,contato.getTelefone());
	stmt.setString(5,contato.getEmail());

	stmt.executeUpdate();
	stmt.close();
}

}[/code]

ConnectionFactory

 import java.sql.DriverManager;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 public class ConnectionFactory {
 
 	private static final String driver = "com.mysql.jdbc.Driver";
 	private static final String url = "jdbc:mysql://localhost:3306/agenda";
 	private static final String user = "root";
 	private static final String pass = "";
 
 	public static Connection getConnection() throws SQLException {
 		try {
 			Class.forName(driver);
 			return DriverManager.getConnection(url,user,pass);
 		}
 		catch (ClassNotFoundException e) {
 			throw new SQLException("O driver jdbc não foi encontrado");
 		}
 
 	}
 
 }

Obrigado pela ajuda.

Qual é a linha e a classe da NullPointerException?

Em TestaDAO:

dao.adiciona©;

Em ContatoDAO:

stmt = this.conexao.prepareStatement(“insert into contato (nome,endereco,idade,telefone,email) values (?,?,?,?,?);”);

a sua classe ContatoDAO não está criando a conexão, pq o construtor está declarado como um método void, e isto não está deixando vc criar uma instancia da conexão, ai ela fica como null e gera a exceção NullPointerException

public void ContatoDAO() throws SQLException {
 		this.conexao = ConnectionFactory.getConnection();
 	}

deve estar assim

public ContatoDAO() throws SQLException {
 		this.conexao = ConnectionFactory.getConnection();
 	}

Caramba!!! Eu fiquei dias revendo o código! Esqueci que o void não deixa retornar nada!

O interessante é que quando eu testo pra ver se a conexão é !=null (fiz isso após postar aqui), ele retorna false, então não sei o que está na variável conexao (deve ser uma conexao vazia, sei lá).

De qualquer forma, muito obrigado!