Atualizando Banco de Dados

6 respostas
L

Bom dia Galera, estou tentando fazer um sisteminha Intranet usando como referência a apostila FJ-21 e estou com o seguinte problema...

Bem galera, quero pegar parametros da página "alterametas.jsp", mas esta ocorrendo o famoso " NullPointerException", sera que alguem poderia me ajudar nesse erro?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
    prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<c:import url="cabecalho.jsp" />
        
        Alteração de Metas:<br/>
        
        <form action="alterametas" method="POST">
            Campanha:<input type="text" name="campanha"/><br/>
            Meta do Dia:<input type="text" name="meta_hoje"/><br/>
            Meta da semana:<input type="text" name="meta_semana"/><br/>
            Meta do mes:<input type="text" name="meta_mes"/><br/>
            <input type="submit" value="Enviar"/>
        </form>

<c:import url="rodape.jsp" />
</body>
</html>
package br.com.wa.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.wa.dao.RankingDAO;
import br.com.wa.modelo.Metas;

public class AlteraMetas extends HttpServlet {
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws IOException, ServletException {
		// busca o writer
		PrintWriter out = response.getWriter();

		// buscando os parâmetros no request
		String campanha = request.getParameter("campanha");
		int meta_hoje = (Integer.parseInt(request.getParameter("meta_hoje")));
		int meta_semana = (Integer.parseInt(request.getParameter("meta_semana")));
		int meta_mes = (Integer.parseInt(request.getParameter("meta_mes")));

		// monta um objeto contato
		Metas metas = new Metas();
		metas.setCampanha(campanha);
		metas.setMeta_hoje(meta_hoje);
		metas.setMeta_semana(meta_semana);
		metas.setMeta_mes(meta_mes);

		// salva o contato
		RankingDAO dao = new RankingDAO();
		dao.atualiza(metas);

		// imprime o nome do contato que foi adicionado

		RequestDispatcher rd = request
				.getRequestDispatcher("/ranking_online.jsp");
		rd.forward(request, response);

		out.println("<html>");
		out.println("<body>");
		out.println("Alteração feita com sucesso");
		out.println("</body>");
		out.println("</html>");
	}
}
package br.com.wa.dao;

import java.sql.*;

import br.com.wa.connection.Connect;
import br.com.wa.modelo.Metas;

public class RankingDAO {

	private static Connection connection;

	public RankingDAO(Connection connection) {
		this.connection = connection;
	}

	public RankingDAO() {
		this.connection = new Connect().getConexao();
	}

	public void atualiza(Metas metas) {

		String sql = "UPDATE CONTATOS SET META_HOJE=?, META_SEMANA=?, META_MENSAL=? WHERE TXT_PRODUTO=?";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);

			stmt.setInt(1, metas.getMeta_hoje());
			stmt.setInt(2, metas.getMeta_semana());
			stmt.setInt(3, metas.getMeta_mes());
			stmt.setString(4, metas.getCampanha());

			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

}

ERRO:

type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
	br.com.wa.dao.RankingDAO.atualiza(RankingDAO.java:24)
	br.com.wa.servlet.AlteraMetas.service(AlteraMetas.java:36)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.32 logs.

OBS: Testeo método atualiza do RankingDAO e esta funcionando perfeitamente, mas parece que tem algo errado com a passagem do parâmetro.

Como sou iniciante em java não consigo resolver esse erro!

6 Respostas

Hebert_Coelho

Não tenha medo de ler o erro:

java.lang.NullPointerException
br.com.wa.dao.RankingDAO.atualiza(RankingDAO.java:24)
Indica que algo está null na linha 24. Veja, ele indica a linha com erro!

Você criou um novo objeto da conexão?

CristianPalmaSola10

Pelo que da de perceber sua Classe Connect não está conseguindo abrir a conexao com o banco de dados… de uma olhada nela se tiver dificuldades poste a sua classe para que alguem lhe ajuda…

L

Então, esse método atualizar eu testei e ta funcionando, o que acontece e que a servlet ta fazendo algo erra e nao passa os valores para o RankingDAO

CristianPalmaSola10

Seria bom voce fazer alguma validaçacao na sua servlet, se os parametros não estiverem presentes lançar uma exececao, algo do tipo…

L

Muito estranho pois acredito q esteja fazendo corretamente e nao entendo pq nao esta passando os parametros

CristianPalmaSola10

para ter certeza de que os paramtros estao indo troca o method do seu form coloca get e os parametros deverao aparecer na url, entao se os parametros aparecerem e voce não conseguir pega-los na servlet o seu problema esta la, faz esse teste…

Criado 22 de janeiro de 2013
Ultima resposta 22 de jan. de 2013
Respostas 6
Participantes 3