Nao estou conseguindo gravar no banco de dados, através de servlets, to utilizando o tutorial da caelum, mas não vai de jeito nenhum. Da na classe ContatoDao
em:
PreparedStatement stmt = connection.prepareStatement(sql);
e da erro em AdicionaContatoServlet em: dao.adiciona(contato);
classe: AdicionaContatoServlet
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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/adicionaContato")
public class AdicionaContatoServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
//busca o writer
PrintWriter out = response.getWriter();
//buscando os parâmetros no request
String nome = request.getParameter("nome");
String endereco = request.getParameter("endereco");
String email = request.getParameter("email");
String dataEmTexto = request.getParameter("dataNascimento");
Calendar dataNascimento = null;
//fazendo a conversão da data
try {
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
dataNascimento = Calendar.getInstance();
dataNascimento.setTime(date);
}catch (ParseException e) {
out.println("Erro de conversão de data");
return; //para a execução do método
}
//monta um objeto contato
Contato contato = new Contato();
contato.setNome(nome);
contato.setEndereco(endereco);
contato.setEmail(email);
contato.setDataNascimento(dataNascimento);
//salva o contato
ContatoDao dao = new ContatoDao();
dao.adiciona(contato);
// imprime o nome do contato que foi adicionado
out.println("<html>");
out.println("<body>");
out.println("Contato " + contato.getNome() + " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
}
Classe: ContatoDao
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
public class ContatoDao {
// a conexão com o banco de dados
private Connection connection;
public ContatoDao() {
try {
this.connection = Conectou.criarConexao();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void adiciona(Contato contato) {
String sql = "insert into contatos " + "(nome,email,endereco,dataNascimento)" + " values (?,?,?,?)";
try {
// prepared statement para inserção
PreparedStatement stmt = connection.prepareStatement(sql);
// seta os valores
stmt.setString(1,contato.getNome());
stmt.setString(2,contato.getEmail());
stmt.setString(3,contato.getEndereco());
stmt.setDate(4, new Date(
contato.getDataNascimento().getTimeInMillis()));
// executa
stmt.execute();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<Contato> getLista() {
try {
ArrayList<Contato> contatos = new ArrayList<Contato>();
PreparedStatement stmt = this.connection.
prepareStatement("select * from contatos");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
// criando o 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"));
// montando a data através do Calendar
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
// adicionando o objeto à lista
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
//
public void altera(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);
}
}
//
public void remove(Contato contato) {
try {
PreparedStatement stmt = connection.prepareStatement("delete from contatos where id=?");
stmt.setLong(1, contato.getId());
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
classe: Contato
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;
}
}
classe: conectou
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conectou {
static final String URL = "jdbc:postgresql://localhost:5432/Categoria"; //indica o caminho do banco de dados
static final String USER = "postgres"; // aqui vai o nome usuario que vc quer acessar
static final String PASS = "treinamentosig"; // aqui a senha do seu banco
public static Connection criarConexao() throws ClassNotFoundException, SQLException{
Class.forName("org.postgresql.Driver"); //aponta para o driver
Connection conectou = DriverManager.getConnection(URL, USER, PASS); //acesso ao driver com os dados deste
if (conectou != null){ //verifica acesso ao driver.
System.out.print("Conexão efetuada com sucesso, parabens. \n");
return conectou;
}
return null;
}
}