Formatar a data

7 respostas
R

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;
	}
}
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);
			}
		
	}
}
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("[email removido]");
		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");
	}
}
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");
			
		}
	}
}

valeu!!!

7 Respostas

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

R

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

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

R

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

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:

R

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

R

po pessoal…ajuda ai !!! :cry:

R

alguma alma caridosa ai pra me ajudar ? :cry:

Rocklee6544

[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:

Criado 14 de janeiro de 2012
Ultima resposta 15 de jan. de 2012
Respostas 7
Participantes 3