Estou precisando de uma ajuda pois nunca usei JDateChoose
Estou tentando pegar a data de um JDateChoose e gravar no banco firebird como Date mesmo mas não estou conseguindo esta dando um erro falando que não esta conseguindo converter a String “Sat Jan 02 00:14:10 BRST 2010”
Estou tentando gravar assim:
o JDateChoose é a Variavel jf_Date.getDate()
No seu SQL, ele está tentando salva a data colocando ela no formato “Sat Jan 02 00:14:10 BRST 2010”
Para gravar no banco, coloque a data no formato yyyy-MM-dd. Para isso, você pode usar a classe DateFormat.
J
juninhon1
Como eu faço para formatar?
você pode me dar um exemplo?
Oi juninhon1. Sempre que postar código, use as tags code, assim:
seucódigo
Senão fica difícil de ler.
J
juninhon1
OK dm_thiago
dessa forma eu consigo gravar essa variavel date no meu banco de dados?
vou fazer o teste e posto o resultado.
Obrigado.
ViniGodoy
O ideal mesmo é você usar PreparedStatement, e parar de se incomodar com o formato do banco de dados. Com o PreparedStatement, é possível usar a data diretamente.
Além disso, o PreparedStatement te livra do problema de SQL Injection, ao qual o seu código está sujeito. Finalmente, é bom citar que as queries usando o PreparedStatement ficam muitíssimo mais fáceis de ler.
J
juninhon1
Como eu uso o PreparedStatement
Você pode me passar um exemplo?
dm_thiago
Se você colocar “prepared statement java” no google, ele já te mostra vários exemplos. Alem de ser mais fácil do que postar a pergunta aqui e bem mais rápido do que esperar alguem responder.
Consegui fazer de uma forma mas no banco esta como varchar e não como date
mas se eu transformo como data a data sai errado por exemplo:
eu puxo a data do windows
se eu não converter grava a data certo mas se eu converter
ele puxa a data errado por exemplo:
28.55.2010
Alguem sabe o porque?
o codigo é o seguinte
Datedata=newDate();DateFormatdf=newSimpleDateFormat("dd.mm.yyyy");jf_Data.setText(df.format(data));try{StringsqlInsert="INSERT INTO CAIXA (ID_CONTA, DESCRICAO, TIPO, DATA, VALOR) VALUES "+"('"+tf_Conta.getText()+"','"+tf_Descricao.getText()+"','"+jc_Tipo.getSelectedItem()+"','"+jf_Data.getText()+"','"+tf_Valor.getText()+"')";con_Caixa.stmt.executeUpdate(sqlInsert);JOptionPane.showMessageDialog(null,"Cadastro Efetuado com Sucesso!");}catch(SQLExceptionerro){JOptionPane.showMessageDialog(null,"Cadastro não efetuado"+erro);}
dm_thiago
juninhon1:
Consegui fazer de uma forma mas no banco esta como varchar e não como date
mas se eu transformo como data a data sai errado por exemplo:
eu puxo a data do windows
se eu não converter grava a data certo mas se eu converter
ele puxa a data errado por exemplo:
28.55.2010
Alguem sabe o porque?
o codigo é o seguinte
Datedata=newDate();DateFormatdf=newSimpleDateFormat("dd.mm.yyyy");jf_Data.setText(df.format(data));try{StringsqlInsert="INSERT INTO CAIXA (ID_CONTA, DESCRICAO, TIPO, DATA, VALOR) VALUES "+"('"+tf_Conta.getText()+"','"+tf_Descricao.getText()+"','"+jc_Tipo.getSelectedItem()+"','"+jf_Data.getText()+"','"+tf_Valor.getText()+"')";con_Caixa.stmt.executeUpdate(sqlInsert);JOptionPane.showMessageDialog(null,"Cadastro Efetuado com Sucesso!");}catch(SQLExceptionerro){JOptionPane.showMessageDialog(null,"Cadastro não efetuado"+erro);}
Teu erro está aqui:
DateFormatdf=newSimpleDateFormat("dd.mm.yyyy");
'mm', em minusculo, quer dizer minutos.
'MM', em maiusculo, quer dizer meses.
E como o Vini falou, você devia usar prepared statement
J
juninhon1
Deu certo agora, realmente era esse erro mesmo.
Muito Obrigado.
T
tmagostinho
Estou com o mesmo problema e não consigo resolver!
A minha solução era:
//Date do tipo Java.sql.DateDated=newDate(jDateChooserObra.getDate().getYear(),jDateChooserObra.getDate().getMonth(),jDateChooserObra.getDate().getDay());ret=repair.insert(d,client,car,getJCheckBoxPay().isSelected(),getDetailsTableModel().getList(),Long.parseLong(jFormattedTextFieldKm.getText().trim()),getDetailsTableModel().getTotal());
[color=red] Já consegui! [/color]
Resolvi da seguinte forma!
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
java.sql.Date d = null;
try {
d = new java.sql.Date(df.parse(df.format(jDateChooserObra.getDate())).getTime());
} catch (ParseException e) {
JOptionPane.showMessageDialog(rootPane,
"Introduza a data correcta", "ERRO",
JOptionPane.ERROR_MESSAGE);
}
C
Chumbinho
Ai galera soou iniciante em java e gostaria de saber como criar uma tela moldal
do tipo que quando eu abrisse ela as outras ficassem bloqueadas