Bom dia, tarde, noite, madrugada a todos os leitores do GUJ!!
[color=#444444] [/color]
Novamente entro para pedir ajuda de vocês, estou trabalhando com datas no BD, mas tenho um problema que não consegui resolver e por isso estou aqui!
Não consigo “pegar” a minha data do banco de dados no formato que desejo (dd/MM/yyyy). Uso para formatar a data do BD a Classe DateFormat no jeito que eu desejo com o método DateFormat.format(MINHA DATA) - com a condição de que ela se torna uma String e meu Bean tem um atributo data que é do tipo java.util.Date que eu preciso fazer que receba a data que vem assim: yyyy/mm/dd do tipo java.sql.Date e fique desse jeito: dd/MM/yyyy do tipo java.util.Date. Quando eu transformo a classe em data novamente com o método parse() da Classe DateFormat ela volta a ficar por extenso e não consigo faze-la ficar do jeito que quero (dd/MM/yyyy).
Tbm como vocês podem ver coloquei o Locale mas o resultado foi o mesmo.
Desculpem minha ignorância, mas li todos os tópicos do GUJ sobre datas e infelizmente nenhum me ajudou a solucionar o problema, acho que não consegui entender direito pois vi mtos tópicos sobre tal assunto…
[color=blue]OBS:[/color] Não gostaria de mudar o tipo do meu atributo data do meu Bean de java.util.Date para String. Mas se for apenas dessa maneira asim farei!
Alguém tem uma luz??
O código vai abaixo.
Código do meu Bean DATA:
public class Data{
private Integer codigo;
private Date data;
private Locale BRASIL = new Locale("pt", "BR");
public Data(Date data) {
this.data = data;
}
public Data(Integer codigo, Date data) {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy", BRASIL);
String dataString = df.format(data);
this.codigo = codigo;
try {
this.data = df.parse(dataString);
} catch (ParseException ex) {
ex.printStackTrace();
}
}
}
Código da minha classe dataDAO
public TreeSet<Data> getDatas() {
TreeSet<Data> treeLista = new TreeSet<Data>();
try {
String sql = "SELECT * FROM datas";
PreparedStatement pst = con.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while (rs.next()) {
//Transformar a data que vem do banco de dados como sql.date para util.date
java.util.Date dataUtil = rs.getDate("data");
//Aqui eu chamo o construtor da minha classe DATA com os dados do banco de dados
Data data = new Data(rs.getInt("codigo"), dataUtil);
treeLista.add(data);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return treeLista;
}
[color=red]OUTRA DÚVIDA![/color]
Pode ser tachada de iniciante mas, qdo se modela um banco de dados e se faz um sistema com base em OO, eu devo ter em meu objeto todos os tipos de dados que estão colocados como tipos de dados do banco de dados? por exemplo: tenho uma coluna data_cadastro que tem como tipo de dados DATE e meu objeto terá tbm um atributo data_cadastro com o mesmo tipo de dados DATE? Isso é por boa prática de programação ou é essencial, achu eu que é essencial mas pergunto as amigos GUJS com quem aprendi java desde o inicio…
Obrigado pela atenção disponibilizada!
Vinícius Ramaciotti