Pessoal boa noite!
Sei que esse assunto é velho e que tem muitas soluçãoes, mais sou iniciante em Java e estou com essa dificuldade
O que eu tenho em código seria:
ContatoDAO
package br.com.caelum.jdbc.dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
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{
//a conexão com o banco de dados
private Connection connection;
public ContatoDAO(){
this.connection = new ConnectionFactory().getConnection();
}
public void adiciona(Contato contato){
String sql = "insert into Contatos (nome, email, endereco, dataNascimento) values (?,?,?,?)";
try{
//prepared statmente para inserção
PreparedStatement stmt = connection.prepareStatement(sql);
//seta 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){
throw new RuntimeException(e);
}
}
public List<Contato> getListaTudo(){
String sql = "select * from Contatos";
try{
List<Contato> contatos = new ArrayList<Contato>();
PreparedStatement stmt = this.connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
//Criamo um objeto do tipo contato
Contato contato = new Contato();
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);
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
//O que eu tenho que fazer aqui para formatar a data acima?
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
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=?, endereco=?, email=?, dataNascimento=? where id=? ";
try{
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEndereco());
stmt.setString(3, contato.getEmail());
stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
stmt.execute();
stmt.close();
}catch(SQLException e){
throw new RuntimeException(e);
}
}
public void remove(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);
}
}
}
Classe modelo
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;
}
}
Classe de teste
package br.com.caelum.jdbc.teste;
import java.util.List;
import br.com.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;
public class TestaLista {
public static void main(String[] args) {
ContatoDAO dao = new ContatoDAO();
List<Contato> contatos = dao.getListaTudo();
for(Contato contato : contatos){
System.out.println("Nome: " + contato.getNome());
System.out.println("E-mail: " + contato.getEmail());
System.out.println("Endereço: " + contato.getEndereco());
System.out.println("Data Nascimento: " + contato.getDataNascimento().getTime() + "\n");
}
}
}
Na Classe contatoDAO no método getListaTudo marquei onde eu tenho que fazer a formação
O que eu estava tentando era
Calendar data = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
data.setTime(rs.getDate("dataNascimento"));
Date date = (Date) data.getTime();
Só que sempre da algum erro
Alguém pode me ajudar?