Estou tendo dificuldade para formatar data do tipo calendar usando SimpleDateFormat
. As datas estão alocadas no banco de dados, quando tento compilar o programa gera um erro dizendo que não pode converter object para String. Já procurei bastante dicas no google, mas não estou conseguindo resolver. Qual a melhor forma para resolver este problema?
Classe Contato
package br.com.caelum.jdbc.modelo;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Contato {
private Long id;
private String nome;
private String email;
private String endereco;
private Calendar dataNascimento;
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 this.dataNascimento;
}
public void setDataNascimento(Calendar dataNascimento) {
this.dataNascimento = dataNascimento;
}
public String getDataFormatada(){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar calendar=Calendar.getInstance();
String datas =sdf.format(calendar.getTime());
return datas;
}
}
Classe ContatoDao
package br.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.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(){
this.connection=new ConnectionFactory().getconnection();
}
public void adiciona(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){
System.out.println(e);
}
}
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()){
Contato 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);
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
}catch(SQLException e){
throw new RuntimeException(e);
}
}
}
Classe Main
package br.com.caelum.jdbc.teste;
import java.text.SimpleDateFormat;
import java.util.List;
import br.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.getLista();
for (Contato contato : contatos) {
System.out.println("Nome: " + contato.getNome());
System.out.println("Email: " +contato.getEmail());
System.out.println("Endereço: "+ contato.getEndereco());
System.out.println("Data de nascimento: " + contato.getDataNascimento().getTime()+"\n");
System.out.println("Data de nascimento formatada: "+contato.getDataFormatada());
}
}
}