Formatar a data

Hi guys!!
Bom galera, recem to iniciando a fj-21 e la to seguindo um exercicio sobre criar um banquito com uma tabela contento dados de pessoas.
Primeira vez q mexo com DB , ai que emoção…hahahahah
baixei e intalei o MySql e me fui…
bom galera mas quando consulto o DB sai a data de nascimento do contato errado, como vcs podem ver abaixo o prompt:

Conectando ao banco
Nome: Caelum
Email: email
Endereço: endereco
Data de Nascimento: Sat Jan 14 00:00:00 BRST 2012

Ta pegando a data local do PC
O ideal seria uma data de nascimento mais realistica. Mas nao to conseguindo mudar a implementação. A apostila sugere usar SimpleDateFormat(String pattern) mas nao to sabendo como.
Outra coisa galera, conforme vcs vao ver abaixo nos codigos, eu setei um email e endereço distintos pro contato e nao ta aparecendo. Alguem sabe pq?

abaixo meus codigos

package br.com.caelum.jbc.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;
	}
}

[code]package br.com.caelum.jbc.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.jbc.ConnectionFactory;
import br.com.caelum.jbc.modelo.Contato;

public class ContatoDAO {

private Connection connection;

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

//metodo para adicionar contato à tabela do banco de dados
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 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);
	}
}

//metodo para retornar pesquisas - pode ter qualquer outro nome q nao getLista
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()){
			//criando o objeto contato
			Contato contato = new Contato();
			contato.setId(rs.getLong("id"));
			contato.setNome(rs.getString("nome"));
			contato.setEmail("email");
			contato.setEndereco("endereco");
			
			// monta a data através do Calendar
			Calendar data = Calendar.getInstance();
			data.setTime(rs.getDate("dataNascimento"));
			contato.setDataNascimento(data);
			
			// adiciona contato à lista
			contatos.add(contato);
		}
	rs.close();
	stmt.close();
	return contatos;
	}catch(SQLException e){ 
		throw new RuntimeException(e);
		}
	
}

}[/code]

[code]package br.com.caelum.jbc.testes;

import java.util.Calendar;

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

public class TestaInsere {

public static void main(String[] args) {
	
	//pronto para gravar
	Contato contato = new Contato();
	contato.setNome("Caelum");
	contato.setEmail("contato@caelum.com.br");
	contato.setEndereco("R. Vergueiro 3185 cj57");
	contato.setDataNascimento(Calendar.getInstance());
	
	//grave nessa conexão
	ContatoDAO dao = new ContatoDAO();
	dao.adiciona(contato);
	System.out.println("Gravado");
}

} [/code]

[code]package br.com.caelum.jbc.testes;

import java.util.List;

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

public class TestaLista {

public static void main(String[] args) {
	ContatoDAO dao = new ContatoDAO();
	//lista os contatos
	List<Contato> contatos = dao.getLista();
	//itera na lista e imprime informações dos contatos
	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");
		
	}
}

}[/code]

valeu!!!

E ae rafaelczy,

Se você está querendo alterar a formatação da data eu sugiro mesmo o SimpleDateFormat, a sintaxe é essa:

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.print(dateFormat.format(Calendar.getInstance().getTime()));

Só pra exemplificar.

Quanto ao motivo de não aparecer o email e o endereco… de uma olhada nas linhas 55 e 56:

contato.setEmail("email");  
contato.setEndereco("endereco"); 

Você esqueceu de pegar o valor no resultSet :slight_smile: tenta assim:

contato.setEmail(rs.getString("email"));  
contato.setEndereco(rs.getString("endereco")); 

[]'s

[quote=Hyren]E ae rafaelczy,

Se você está querendo alterar a formatação da data eu sugiro mesmo o SimpleDateFormat, a sintaxe é essa:

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.print(dateFormat.format(Calendar.getInstance().getTime()));

Só pra exemplificar.

Quanto ao motivo de não aparecer o email e o endereco… de uma olhada nas linhas 55 e 56:

contato.setEmail("email");  
contato.setEndereco("endereco"); 

Você esqueceu de pegar o valor no resultSet :slight_smile: tenta assim:

contato.setEmail(rs.getString("email"));  
contato.setEndereco(rs.getString("endereco")); 

[]'s[/quote]

puxa vida brother!!! muiiiiiiiito obrigado …um erro por distração na digitação e outro por ser nub na API java
valeu mesmo !!!

[quote=Hyren]E ae rafaelczy,

Se você está querendo alterar a formatação da data eu sugiro mesmo o SimpleDateFormat, a sintaxe é essa:

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.print(dateFormat.format(Calendar.getInstance().getTime()));

[]'s[/quote]

men: agora ficquei confuso…em qual de minhas classes eu ponho essas linhas q tu sugeriu… e alem disso apago quais linhas?
foda ser nub !!!
thank’s again :lol:

galera… alguem pode me ajudar na questao ai em cima, apenas essa pois o resto ja entendi !!!
valeu

po pessoal…ajuda ai !!! :cry:

alguma alma caridosa ai pra me ajudar ? :cry:

[b]Joga essa linha no system da sua classe TestaLista , afinal é nela que vc esta imprimindo a sua lista de contatos do banco.

Também to lendo a FJ21, ta bem interessante.

Estou algumas páginas a frente espero termina-la logo.

A apostila é muito muito boa, é bem interessante
[/b] :twisted: