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!!!