Meu Servlet não está gravando meu dados

2 respostas
xwillianss

Olá minha servlet não quer adicionar um novo contato no banco de dados:

package br.com.caelum.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

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

import br.com.caelum.dao.ContatoDao;
import br.com.caelum.modelo.Contato;

@SuppressWarnings("serial")
public class AdicionaContatoServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		PrintWriter writer = response.getWriter();
		Contato c = new Contato();

		String nome = request.getParameter("nome");
		String fone = request.getParameter("fone");
		String email = request.getParameter("email");
		String endereco = request.getParameter("endereco");
		
		c.setNome(nome);
		c.setFone(fone);
		c.setEmail(email);
		c.setEndereco(endereco);

		try {
			ContatoDao dao = new ContatoDao();
			dao.insere(c);
		} catch (SQLException e) {
			e.getMessage();
		}
		writer.println("<html>");
		writer.println("Contato adicionado com sucesso!");
		writer.println("</html>");

	}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4">
<servlet>
	<servlet-name>adicionaContato</servlet-name>
	<servlet-class>br.com.caelum.servlet.AdicionaContatoServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>adicionaContato</servlet-name>
	<url-pattern>/adiciona-contato</url-pattern>
</servlet-mapping>
</web-app>
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title>Adiciona Contato</title>
</head>
<body>
	<p>Preencha o formulário abaixo e depois clique no botão [enviar]</p>
	<form action="adiciona-contato" method="post">
		Nome: <input type="text" name="nome"/><br/>
		Fone: <input type="text" name="fone"/><br/>
		Email: <input type="text" name="email"/><br/>
		Endereço: <input type="text" name="endereco"/><br/><br/>
		<input type="submit" value="Enviar"/>
	</form>
</body>
</html>
package br.com.caelum.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.caelum.modelo.Contato;
import br.com.caelum.util.ConnectionFactory;

public class ContatoDao {
	private Connection connection;
	private PreparedStatement stmt;

	public ContatoDao() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
	}

	public void altera(Contato contato) throws SQLException {
		stmt = this.connection.prepareStatement("update from contatos set "
				+ "nome=?,fone=?,email=?,endereco=? where id=?");
		stmt.setString(1, contato.getNome());
		stmt.setString(2, contato.getFone());
		stmt.setString(3, contato.getEmail());
		stmt.setString(4, contato.getEndereco());
		stmt.setLong(5, contato.getId());
		stmt.execute();
		stmt.close();
		this.connection.close();
	}

	public void remove(Contato contato) throws SQLException {
		stmt = this.connection
				.prepareStatement("delete from contatos where id=?");
		stmt.setLong(1, contato.getId());
		stmt.execute();
		stmt.close();
		this.connection.close();
	}

	public void insere(Contato contato) throws SQLException {
		this.stmt = this.connection
				.prepareStatement("insert into contatos(nome,fone,email,endereco)"
						+ "values(?,?,?,?)");
		stmt.setString(1, contato.getNome());
		stmt.setString(2, contato.getFone());
		stmt.setString(3, contato.getEmail());
		stmt.setString(4, contato.getEndereco());
		stmt.execute();
		stmt.close();
		this.connection.close();
	}

	public List<Contato> pesquisa(Long id) throws SQLException {
		this.stmt = this.connection
				.prepareStatement("select * from contatos where id=?");
		stmt.setLong(1, id);
		ResultSet rs = stmt.executeQuery();
		List<Contato> lista = new ArrayList<Contato>();
		while(rs.next()){
			Contato contato = new Contato();
			contato.setId(rs.getLong("id"));
			contato.setNome(rs.getString("nome"));
			contato.setFone(rs.getString("fone"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
			lista.add(contato);
		}
		rs.close();
		stmt.close();
		this.connection.close();
		return lista;
	}

	public List<Contato> getLista() throws SQLException {
		this.stmt = this.connection.prepareStatement("select * from contatos");
		ResultSet rs = stmt.executeQuery();
		List<Contato> lista = new ArrayList<Contato>();
		while(rs.next()){
			Contato contato = new Contato();
			contato.setId(rs.getLong("id"));
			contato.setNome(rs.getString("nome"));
			contato.setFone(rs.getString("fone"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
			lista.add(contato);
		}
		rs.close();
		stmt.close();
		this.connection.close();
		return lista;
	}
}

Isso só acontece quando eu adiciono um novo contato atraves de uma servlet…
Mas eu fiz um teste utilizando um classe com o método main e deu certo…

2 Respostas

ramilani12

Altere o seu try/catch :

try {  
             ContatoDao dao = new ContatoDao();  
             dao.insere(c);  
         } catch (SQLException e) {  
             e.printStackTrace();  
         }

E veja qual erro reportado , o getMessage funcionaria se vc passasse para System.out.println(e.getMessage())

xwillianss

ramilani12:
Altere o seu try/catch :

try {  
             ContatoDao dao = new ContatoDao();  
             dao.insere(c);  
         } catch (SQLException e) {  
             e.printStackTrace();  
         }

E veja qual erro reportado , o getMessage funcionaria se vc passasse para System.out.println(e.getMessage())

Valeu pelas dicas… mas o problema foi resolvido depois que eu coloquei o Connector JDBC para MySQL na pasta lib…

Criado 5 de outubro de 2008
Ultima resposta 5 de out. de 2008
Respostas 2
Participantes 2