Versão atual:

Não consigo gravar no Banco

Gente, bom dia!

Estou estudando pela apostila da Caelum FJ21, sou iniciante, e estou com um problema. Não consigo gravar o contato no banco de dados. Quando clico em gravar no formulário HTML aparece a mensagem que o contato foi gravado com sucesso, mas quando verifico no banco não está lá. Gostaria de ajuda e desde já agradeço! Segue o código:

Conexão com o BD

// Conexão com o banco de dados
package br.com.caelum.jdbc;

import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;

public class ConnectionFactory {


    public Connection getConnection() throws ClassNotFoundException {

        try {
            Class.forName("com.mysql.jdbc.Driver");
            return DriverManager.getConnection("jdbc:mysql://localhost/fj21",
                    "root", "123");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }
}

Classe ContatoDAO

package br.com.caelum.jdbc.dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import br.com.caelum.jdbc.ConnectionFactory;
import br.com.caelum.jdbc.modelo.Contato;

public class ContatoDAO {

    private Connection connection;

    public ContatoDAO() throws ClassNotFoundException {
        this.connection = new ConnectionFactory().getConnection();
    }

    // Método adiciona
    public void adciona(Contato contato) {

        String sql = "INSERT INTO CONTATOS"
                + " (NOME, EMAIL, ENDERECO, DATANASCIMENTO)"
                + " VALUES (?,?,?,?)";

        try {

            PreparedStatement stmt = connection.prepareStatement(sql);


            stmt.setString(1, contato.getNome());
            stmt.setString(2, contato.getEmail());
            stmt.setString(3, contato.getEndereco());
            stmt.setDate(4, new Date(contato.getDataNascimento()
                    .getTimeInMillis()));

            stmt.execute();

            stmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);

        }
    } // Fim do método adiciona

    // Método litar contatos
    public List<Contato> getLista() {

        try {
            List<Contato> contatos = new ArrayList<Contato>();
            PreparedStatement stmt = this.connection
                    .prepareStatement("SELECT * FROM CONTATOS");

            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                // Criar um objeto contato
                Contato contato = new Contato();
                contato.setId(rs.getLong("id"));
                contato.setNome(rs.getString("nome"));
                contato.setEmail(rs.getString("email"));
                contato.setEndereco(rs.getString("endereco"));

                // Montar a data
                Calendar data = Calendar.getInstance();
                data.setTime(rs.getDate("dataNascimento"));
                contato.setDataNascimento(data);

                // Add Contato a lista de Contatos
                contatos.add(contato);
            }

            rs.close();
            stmt.close();
            return contatos;

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    } // Fim do método listar contatos

    // Método pesquisar por ID
    public Contato pesquisar(Integer id) {
        Contato contato = null;
        try {

            String sql = "SELECT * FROM CONTATOS WHERE ID = ?";
            PreparedStatement stmt = this.connection.prepareStatement(sql);

            stmt.setInt(1, id);

            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                contato = new Contato();
                contato.setId(rs.getLong("id"));
                contato.setNome(rs.getString("nome"));
                contato.setEmail(rs.getString("email"));
                contato.setEndereco(rs.getString("endereco"));

                Calendar data = Calendar.getInstance();
                data.setTime(rs.getDate("dataNascimento"));
                contato.setDataNascimento(data);

            }

            rs.close();
            stmt.close();
            return contato;

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    } // Fim do método pesquisar

    // Método Alterar
    public void alterar(Contato contato) {

        String sql = "UPDATE CONTATOS SET NOME = ?, EMAIL = ?, ENDERECO = ?,"
                + " DATANASCIMENTO = ? WHERE ID = ?";

        try {
            PreparedStatement stmt = connection.prepareStatement(sql);
            stmt.setString(1, contato.getNome());
            stmt.setString(2, contato.getEmail());
            stmt.setString(3, contato.getEndereco());
            stmt.setDate(4, new Date(contato.getDataNascimento()
                    .getTimeInMillis()));
            stmt.setLong(5, contato.getId());

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

            throw new RuntimeException(e);
        }
    } // Fim do Método Alterar

    //Método Excluir
    public void deletar(Contato contato){

        String sql = "DELETE FROM CONTATOS WHERE ID = ?";

        try {

            PreparedStatement stmt = connection.prepareStatement(sql);
            stmt.setLong(1, contato.getId());
            stmt.execute();
            stmt.close();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    } // Fim do método excluir
}

Classe Contato

package br.com.caelum.jdbc.modelo;

import java.util.Calendar;

public class Contato {

    private Long id;
    private String nome;
    private String email;
    private String endereco;
    private Calendar dataNascimento;

    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 getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public Calendar getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Calendar dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

}

Servlet Adiciona Contato

package br.com.caelum.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

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

import br.com.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;

public class AdicionaContatoServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        PrintWriter out = response.getWriter();

        // Pegando os parâmetros do request
        String nome = request.getParameter("nome");
        String email = request.getParameter("email");
        String endereco = request.getParameter("endereco");
        String dataEmTexto = request.getParameter("dataNascimento");
        Calendar dataNascimento = null;

        // Conversão das datas
        try {
            Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
            dataNascimento = Calendar.getInstance();
            dataNascimento.setTime(date);
        } catch (ParseException e) {
            out.println("Erro na conversão da data");
            return; // Para execução do método
        }

        // Monta o objeto contato
        Contato contato = new Contato();
        contato.setNome(nome);
        contato.setEmail(email);
        contato.setEndereco(endereco);
        contato.setDataNascimento(dataNascimento);

        // Salva o contato
        ContatoDAO contatoDAO;
        try {
            contatoDAO = new ContatoDAO();
            contatoDAO.adciona(contato);
        } catch (ClassNotFoundException e) {

            e.printStackTrace();
        }

        // Imprime o contato adicionado

        out.println("<html>");
        out.println("<body>");
        out.println("Contato " + contato.getNome() + " adicionado com sucesso!");
        out.println("</body>");
        out.println("</html>");

    }

}

Formulário HTML para adicionar um contato

<html>
<body>
    <form action="adicionaContato">

        Nome: <input type="text" name="nome" /> </br> 
        E-mail: <input type="text" name="email" /> </br> 
        Endereço: <input type="text" name="endereco" /> </br>
        Data de Nascimento: <input type="text" name="dataNascimento" /> </br> 
        <input type="submit" value="Gravar" />

    </form>
</body>
</html>

Versão(1):

Ver a versão formatada

Não consigo gravar no Banco

Comentário

new question