Gravar Date no Firebird

Olá Pessoal.

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.

Ou dicas de como poderia fazer isso.

Desde jah grato!!!

1 curtida

vc pode fazer assim,usando a Calendar


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();
					
			
1 curtida

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.

pstmt.setTimestamp(1,new Timestamp(dtf.getTimeInMillis()));

Que bom que funcionou é o seguinte:


pstmt.setTimestamp(1,new Timestamp(dtf.getTimeInMillis()));

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…

1 curtida

OK, muito obrigado pela atenção !!!

Até a proxima…

1 curtida

Boa mesmo a soluçao… estava procurando algo do genero…
xD
Vlw mesmo!