[Resolvido]Não estou entendendo esse null-pointer

2 respostas
dcorteztec

Não estou entendo esse null-pointer porque a variável esta recebendo os dados do formulário vou colocar o erro

o jar que estou usando mysql-connector-java-5.1.6-bin.jar

javax.servlet.ServletException: java.lang.NullPointerException

org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)

org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)

javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause
java.lang.NullPointerException

com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:649)

com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:587)

com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:4068)

java.lang.String.valueOf(Unknown Source)

java.lang.StringBuffer.append(Unknown Source)

com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)

com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)

com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)

com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)

com.mysql.jdbc.Connection.registerStatement(Connection.java)

com.mysql.jdbc.Statement.(Statement.java:270)

com.mysql.jdbc.PreparedStatement.(PreparedStatement.java:500)

com.mysql.jdbc.Connection.clientPrepareStatement(Connection.java:2187)

com.mysql.jdbc.Connection.prepareStatement(Connection.java:4829)

com.mysql.jdbc.Connection.prepareStatement(Connection.java:4734)

br.com.novavida.DAO.CadastroDAO.adiciona(CadastroDAO.java:33)

br.com.novavida.Action.AdcionaCadastroAction.execute(AdcionaCadastroAction.java:22)

org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)

javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

minha classe de DAO

package br.com.novavida.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


import br.com.novavida.connections.ConnectionsFactory;
import br.com.novavida.pojo.Cadastro;

public class CadastroDAO {

	private Connection connection;

	public CadastroDAO(Connection conn) {
		this.connection = conn;
	}

	public CadastroDAO() throws SQLException {
		this.connection = ConnectionsFactory.getConnection();

	}

	public void adiciona(Cadastro cadastro) throws SQLException {
		PreparedStatement statement = this.connection
				.prepareStatement ("INSERT INTO cad_membro (NOME_CAD,END_CAD,BAIRRO_CAD,CIDADE_CAD,UF_CAD,CEP_CAD,TEL_CAD,TELTRAB_CAD,"
						+ "NASC_CAD,PROF_CAD,ESTACIV_CAD,DATACAS_CAD,NFILHOS_CAD,NOMECONJ_CAD,MEMBCONJ_CAD,OUTRAIGRE_CAD,BATISNASG_CAD,FUNCAO_CAD,EMAIL_CAD,DATAENT_CAD,"
						+ "IMAGEM_CAD, NASCONJ_CAD) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
		statement.setString(1, cadastro.getNome());
		statement.setString(2, cadastro.getEndereco());
		statement.setString(3, cadastro.getBairro());
		statement.setString(4, cadastro.getCidade());
		statement.setString(5, cadastro.getUf());
		statement.setInt(6, cadastro.getCep());
		statement.setInt(7, cadastro.getTelefone());
		statement.setInt(8, cadastro.getTeltrab());
		statement.setDate(9, cadastro.getNascimento());
		statement.setString(10, cadastro.getProfissao());
		statement.setString(11, cadastro.getEstcivil());
		statement.setDate(12, cadastro.getDatacas());
		statement.setInt(13, cadastro.getNfilhos());
		statement.setString(14, cadastro.getConjuge());
		statement.setString(15, cadastro.getMembroigreja());
		statement.setString(16, cadastro.getOutraigreja());
		statement.setDate(17, cadastro.getBatismo());
		statement.setString(18, cadastro.getFuncao());
		statement.setString(19, cadastro.getEmail());
		statement.setDate(20, cadastro.getDataent());
		statement.setString(21, cadastro.getImagem());
		statement.setDate(22, cadastro.getNasconj());

		statement.execute();
		statement.close();

	}

	public void remove(Cadastro cadastro) throws SQLException {
		PreparedStatement statement = connection
				.prepareStatement("DELETE FROM cad_membro WHERE NUM_CAD=?");

		statement.setLong(1, cadastro.getNum_cad());

		statement.execute();
		statement.close();
	}

	public List<Cadastro> getLista() throws SQLException {
		PreparedStatement statement = this.connection
				.prepareStatement("SELECT * FROM cad_membro");
		ResultSet rs = statement.executeQuery();

		List<Cadastro> cad = new ArrayList<Cadastro>();

		while (rs.next()) {

			Cadastro cadastro = new Cadastro();

			cadastro.setNum_cad(rs.getLong("NUM_CAD"));
			cadastro.setBairro(rs.getString("BAIRRO_CAD"));
			cadastro.setBatismo(rs.getDate("BATISNASG"));
			cadastro.setCep(rs.getInt("CEP_CAD"));
			cadastro.setCidade(rs.getString("CIDADE_CAD"));
			cadastro.setConjuge(rs.getString("NOME_CONJ"));
			cadastro.setDatacas(rs.getDate("DATACAS_CAD"));
			cadastro.setDataent(rs.getDate("DATAENT_CAD"));
			cadastro.setEmail(rs.getString("EMAIL_CAD"));
			cadastro.setEndereco(rs.getString("END_CAD"));
			cadastro.setEstcivil(rs.getString("ESTACIV_CAD"));
			cadastro.setFuncao(rs.getString("FUNCAO_CAD"));
			cadastro.setImagem(rs.getString("IMAGEM_CAD"));
			cadastro.setMembroigreja(rs.getString("MENBCONJ"));
			cadastro.setNascimento(rs.getDate("NASC_CAD"));
			cadastro.setNfilhos(rs.getInt("NFILHOS"));
			cadastro.setNome(rs.getString("NOME_CAD"));
			cadastro.setOutraigreja(rs.getString("OUTRAIGRE"));
			cadastro.setProfissao(rs.getString("PROF_CAD"));
			cadastro.setTelefone(rs.getInt("TEL_CAD"));
			cadastro.setTeltrab(rs.getInt("TELTRAB_CAF"));
			cadastro.setUf(rs.getString("UF_CAD"));
            cadastro.setNasconj(rs.getDate("NASCONJ_CAD"));
			// ADCIONANDO OBJ A LISTA

			cad.add(cadastro);

		}
		rs.close();
		statement.close();

		return cad;
	}

	public void altera(Cadastro cadastro) throws SQLException {
		PreparedStatement statement = connection
				.prepareStatement("UPDATE cad_membro SET NOME_CAD=?,END_CAD=?,BAIRRO_CAD=?,CIDADE_CAD=?,UF_CAD=?,CEP_CAD=?,TEL_CAD=?,TELTRAB_CAD=?,"
						+ "NASC_CAD=?,PROF_CAD=?,ESTACIV_CAD=?,DATACAS_CAD=?,NFILHOS_CAD=?,NOMECONJ_CAD=?,MEMBCONJ_CAD=?,OUTRAIGRE_CAD=?,BATISNASG_CAD=?,FUNCAO_CAD=?,EMAIL_CAD=?,DATAENT_CAD=?,"
						+ "IMAGEM_CAD=?,NASCONJ_CAD=? WHERE NUM_CAD=?");
		statement.setString(1, cadastro.getNome());
		statement.setString(2, cadastro.getEndereco());
		statement.setString(3, cadastro.getBairro());
		statement.setString(4, cadastro.getCidade());
		statement.setString(5, cadastro.getUf());
		statement.setInt(6, cadastro.getCep());
		statement.setInt(7, cadastro.getTelefone());
		statement.setInt(8, cadastro.getTeltrab());
		statement.setDate(9, cadastro.getNascimento());
		statement.setString(10, cadastro.getProfissao());
		statement.setString(11, cadastro.getEstcivil());
		statement.setDate(12, cadastro.getDatacas());
		statement.setInt(13, cadastro.getNfilhos());
		statement.setString(14, cadastro.getConjuge());
		statement.setString(15, cadastro.getMembroigreja());
		statement.setString(16, cadastro.getOutraigreja());
		statement.setDate(17, cadastro.getBatismo());
		statement.setString(18, cadastro.getFuncao());
		statement.setString(19, cadastro.getEmail());
		statement.setDate(20, cadastro.getDataent());
		statement.setString(21, cadastro.getImagem());
        statement.setDate(22, cadastro.getNasconj());
        statement.setLong(23, cadastro.getNum_cad());
		
        statement.execute();
		statement.close();

	}

	public Cadastro procura(Long id) throws SQLException {
		Cadastro cadastro = new Cadastro();
		PreparedStatement statement = this.connection
				.prepareStatement("SELECT * FROM cad_membro WHERE NUM_CAD=?");
		statement.setLong(1, id);

		ResultSet rs = statement.executeQuery();

		while (rs.next()) {
			cadastro.setNum_cad(rs.getLong("NUM_CAD"));
			cadastro.setBairro(rs.getString("BAIRRO_CAD"));
			cadastro.setBatismo(rs.getDate("BATISNASG_CAD"));
			cadastro.setCep(rs.getInt("CEP_CAD"));
			cadastro.setCidade(rs.getString("CIDADE_CAD"));
			cadastro.setConjuge(rs.getString("NOME_CAD"));
			cadastro.setDatacas(rs.getDate("DATACAS_CAD"));
			cadastro.setDataent(rs.getDate("DATAENT_CAD"));
			cadastro.setEmail(rs.getString("EMAIL_CAD"));
			cadastro.setEndereco(rs.getString("END_CAD"));
			cadastro.setEstcivil(rs.getString("ESTACIV_CAD"));
			cadastro.setFuncao(rs.getString("FUNCAO_CAD"));
			cadastro.setImagem(rs.getString("IMAGEM_CAD"));
			cadastro.setMembroigreja(rs.getString("MEMBCONJ_CAD"));
			cadastro.setNascimento(rs.getDate("NASC_CAD"));
			cadastro.setNfilhos(rs.getInt("NFILHOS_CAD"));
			cadastro.setNome(rs.getString("NOME_CAD"));
			cadastro.setOutraigreja(rs.getString("OUTRAIGRE_CAD"));
			cadastro.setProfissao(rs.getString("PROF_CAD"));
			cadastro.setTelefone(rs.getInt("TEL_CAD"));
			cadastro.setTeltrab(rs.getInt("TELTRAB_CAD"));
			cadastro.setUf(rs.getString("UF_CAD"));
            cadastro.setNasconj(rs.getDate("NASCONJ_CAD"));
			
		}
		return cadastro;
	}

}

2 Respostas

jyoshiriro

Amigo, coloca um breakpoint na primeira linha do método adicionar() do teu CadastroDAO e roda tua aplicação em modo DEBUG.
Ao que tudo indica o objeto connection está null quando tentas criar um PreparadStatment.

Senão, é o objeto cadastro que está null.

dcorteztec

Descobrir o erro tinha uma classe mysql-connector antiga dentro da pasta do tomcat e do jdk

Criado 7 de janeiro de 2010
Ultima resposta 7 de jan. de 2010
Respostas 2
Participantes 2