Estou com dificuldades para mostrar a data no form.
Quanto a inclusão do registro beleza, no campo do form a data é recebida através da máscara formatoData ex: (01/04/2008) e grava no banco
no formato 2008-04-01.
A questão é para visualisar esta data:
No campo do formulário não mostra a data;
No jtable visualiza no mesmo formato que está no arquivo.
Antes de tudo, data vc le do resultset com getDate e nao getString.
Agora segue um codigo que pode te ajudar:
DateFormat df1 = new SimpleDateFormat("dd/MM/yyyy");
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
String sdata = "2008-04-01";
Date data = df2.parse(sdata);
System.out.println(df1.format(data));
Legal pela ajuda… Devo ter mais algum código incorreto ou faltando alguma coisa.
Informei os códigos conforme você mencionou, porém apresenta o seguinte erro na linha que contem o df2.parse:
Não pode encontrar o símbolo: method parse(java.sql.Date) location: class java.text.DateFormat
Não sei porque do erro se a classe java.text.DateFormat está sendo importada.
Poderia dar uma olhada para ver o que está faltando.
DateFormat df1 = new SimpleDateFormat("dd/MM/yyyy");
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
Date data2 = df2.parse(con_ausatend.resultset.getDate("aus_data"));
JOptionPane.showMessageDialog(null,"Data = "+ data2);
O parse vc faz de uma string para obter a data que aquela string representa.
Se vc pega do ResultSet com getDate, entao vc naum precisa fazer parse para um Date porque o que vc tem ja eh um Date.
Ai para mostrar esse Date no formato certo, ai sim, vc vai formatar (usando o metodo format) para o formato que vc deseja exibir.
Ah e pelo que eu sei, as vezes pode ocorrer erro na conversado de java.sql.Date para java.util.Date, o ideal eh vc trabalhar com java.util.Date, mas o getDate do ResultSet retorna java.sql.Date, entao faz assim:
java.sql.Date sqlDate = resultSet.getDate(xx);
java.util.Date data = sqlDate != null ? new java.util.Date(sqlDate.getTime) : null;
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
ps: nao testei esse codigo hehe mas deve ser mais ou menos isso.
Entao, foi isso que eu disse ainda semana passada aqui, ai 3 programadores do projeto falaram algo como java.sql.Date nao se da muito bem com java.util.Date e blablabla, disseram que era alguma coisa a ver com algumas implementacoes dos drivers, como meu tempo e paciencia para testar isso era 0, resolvi fazer uma consulta no google, vi umas conversoes assim, entao, para nao precisar provar o contrario para eles, eu aceitei hehe pensei: vai que seja uma excecao e ocorrer alguma diferenca de acordo com os drives eh, no google agente encontra o que quer achar neh hehe se quiser achar que 1 != 1 agente acha
Hoje olhando melhor, nao achei nada que pudesse comprovar esse problema
O que existe é que pra gravar em um PreparedStatement, você precisa de um java.sql.Date, e geralmente se tem um java.util.Date, e nesse caso é necessario fazer essa conversão dessa forma aí… mas o contrario não, até porque um cast assim já funcionaria:
Estou progredindo, na verdade meio devagar, mas estou.
Consegui pegar a data do banco no formato aaaa/mm/dd e visualizar no formato dd/mm/aaaa,
isso ao visualizar a linha do primeiro registro beleza.
Porém ao duplo clique na linha do jtable, no primeiro método mostra a data e no segundo não,
consta a data como null.
Se o amigo puder me ajudar, agradeço.
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
int linha = 0;
if (evt.getClickCount() ==2) {
linha = jTable1.getSelectedRow();
codate = (String) jTable1.getValueAt(linha, 0);
java.sql.Date data = (java.sql.Date) jTable1.getValueAt(linha, 2);
JOptionPane.showMessageDialog(null,“data =”+ data);
// AQUI MOSTRA A DATA
jtable_form();
}
}
// AQUI A DATA É NULL // porque será
// POR ESSE MOTIVO NÃO CONSIGO EFETUAR O SELECT o codate TEM CONTEÚDO, MAS A data É null
String sql = "select * from ausatend where aus_codate = "+codate + " and aus_data = "+data;
con_ausatend.executeSQL(sql);
con_ausatend.resultset.first();
mostrar_dados(); //irá chamar a função em que irá mstrar os dados no form
}
Ae juraci, to pegando o bonde andando ae, mas acho q seu erro está aqui oh
java.sql.Date data = (java.sql.Date) jTable1.getValueAt(linha, 2);
Vc esta criando um novo atributo data atributo do método, não da classe, e provavelmente vc deve ter um atributo com mesmo nome, mas sendo atributo de classe, o problema é que vc coloca o valor no atributo do método e não da classe, quando vai utilizar o atributo da classe ele ainda está null.