Eu tenho um banco de dados em Firebird, com um campo DATE para gravar a data de nascimento, e estou há duas manhãs tentando pegar a data que o usuário insere em um JFormattedTextField, converter para Date, para gravar no banco. Já peguei varios exemplos na internet, mas nao consigo, sempre da erro, ou que nao consegue fazer o parse da String para Date, ou erro do formato que está sendo passado para o banco de dados na hora de gravar.
Eu gostaria de um exemplo se possível, de como capturar a data digitada de um JFormattedTextField, transformar para Date e gravar banco de dados em um campo DATE. O formato é “dd/MM/aaaa”. E o mesmo para pegar o horario de um JFormattedTextField, com o formato ##:##:## e transformar para Time e gravar o no banco que também possui um campo TIME.
String dtFinal = textFieldDtFinal.getText();//pega no seu textfield
String [] aFinal = dtFinal.split("/");//quebra a string nas barras
GregorianCalendar dtF = new GregorianCalendar(TimeZone.getTimeZone("GMT-3"),new Locale("pt_BR"));
dtF.set(GregorianCalendar.YEAR,Integer.parseInt(aFinal[2]));//aqui seta o ano
dtF.set(GregorianCalendar.MONTH,Integer.parseInt(aFinal[1])-1);//aqui seta o mes
dtF.set(GregorianCalendar.DATE,Integer.parseInt(aFinal[0]));//aqui seta o dia
Na hora de gravar
PreparedStatement pstmt = dbCon.prepareStatement("UPDATE tabela SET data = ?");
pstmt.setTimestamp(1,new Timestamp(dtf.getTimeInMillis()));
resp = pstmt.executeUpdate();
valeu rafael, fiz o que vc sugeriu e funcionou certinhu, inclusive pro meu campo hora, só fiz as devidas modificações e inseriu a hora certinhu também.
mas se nao for pedir muito, gostaria de uma explicação sobre a seguinte linha, pois nao entendi muito bem esse negocio de Timestamp e getTimeInMillis(). Eu nunca tinha trabalhando com datas e hora no java, eu achava que era um simples Date e Time, mais vi que tem muitas outras coisas como o Timestamp e o getTimeInMillis que vc mostrou no exemplo.
seguinte a classe Timestamp tem dois construtores e um deles recebe um valor long time , o método getTimeInMillis() da Classe Calendar , ele retorna um long de milisegundos , usei a classe Calendar prq a Classe Date ela está depreciada que dizer que a SUN , nao dara mais manutenção nessa classe…