Inserir hora manual e gravar no postgrees
Boa noite.
Tenho um campo jtextfield onde quero que seja inserida uma hora manualmente (12:50) por exemplo. Quero gravar essa informação no postgress, No postgrees a Date Type é do tipo "time without time zone". Mas não está dando ainda na construçã do codigo. Segue uma parte dele, se alguem puder me ajudar eu agradeço:
Tenho um campo jtextfield onde quero que seja inserida uma hora manualmente (12:50) por exemplo. Quero gravar essa informação no postgress, No postgrees a Date Type é do tipo "time without time zone". Mas não está dando ainda na construçã do codigo. Segue uma parte dele, se alguem puder me ajudar eu agradeço:
try {
DateFormat formatter = new SimpleDateFormat("##:##");
java.util.Date date = (java.util.Date) formatter.parse(ini.getText()); // ini campo jtextfield
PreparedStatement pst = conecta.conn.prepareStatement("Insert into cad_turno(turno, hr_inicio)values(?,?)");
pst.setString(1, turno.getText());
pst.setDate(2, new java.sql.Date(date.getTime()));
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Dados gravados com sucesso!!");
Silvio Silveira
Curtidas 0
Respostas
Eduardo Pessoa
01/05/2015
Essa mudança deve ser feito no banco ou na linguagem, eu não sei bem.
GOSTEI 0
Silvio Silveira
01/05/2015
Entao é assim: tenho um campo do tipo jtextfield (Com mascara de entrada) . ele deve receber uma hora que o usuario vai digitar: Exemplo: 12:15. Tenho que gravar essa informação no Postgree.
Lá no banco de dados, o campo está do tipo "time without time zone". O tipo de dados pra passar para o banco de dados tem que ser do tipo time, ou seja, receber os dados da jtextfield, trata-lo (converter para time) e gravar no banco de dados. Acho que é isso.
Lá no banco de dados, o campo está do tipo "time without time zone". O tipo de dados pra passar para o banco de dados tem que ser do tipo time, ou seja, receber os dados da jtextfield, trata-lo (converter para time) e gravar no banco de dados. Acho que é isso.
GOSTEI 0
Eduardo Pessoa
01/05/2015
Eu acho que entendi, então é o Java que tem que tratar, tu já chegou a ver esses links?
[url]http://stackoverflow.com/questions/20972510/how-to-convert-postgresql-timestamp-with-time-zone-to-datetime[/url]
[url]http://stackoverflow.com/questions/1071800/how-to-use-joda-time-with-java-sql-timestamp[/url]
[url]http://stackoverflow.com/questions/20972510/how-to-convert-postgresql-timestamp-with-time-zone-to-datetime[/url]
[url]http://stackoverflow.com/questions/1071800/how-to-use-joda-time-with-java-sql-timestamp[/url]
GOSTEI 0
Silvio Silveira
01/05/2015
Tentando seguir esses posts:
Mas aparece erro :
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Time
at visao_Form.Cad_turno.jGravarActionPerformed(Cad_turno.java:406)
at visao_Form.Cad_turno.access$400(Cad_turno.java:26)
at visao_Form.Cad_turno$5.actionPerformed(Cad_turno.java:124)
try {
String psqlDate = ini.getText();
Time date = (Time) new SimpleDateFormat("HH:mm").parse(psqlDate);
PreparedStatement pst = conecta.conn.prepareStatement("Insert into cad_turno(turno, hr_inicio,hr_fim)values(?,?,?)");
pst.setString(1, turno.getText());
pst.setTime(2, (Time) date);
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Dados gravados com sucesso!!");
Mas aparece erro :
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Time
at visao_Form.Cad_turno.jGravarActionPerformed(Cad_turno.java:406)
at visao_Form.Cad_turno.access$400(Cad_turno.java:26)
at visao_Form.Cad_turno$5.actionPerformed(Cad_turno.java:124)
GOSTEI 0
Silvio Silveira
01/05/2015
consegui gravar no BD com esse código:
só que no BD ele está armazenamdo assim: "12:00:00.000000 -03:00:00" - Como eu retiro os dígitos a mais para que fique assim: "12:00:00" ?
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String hora = ini.getText();
try {
Date d = sdf.parse(hora);
Time timee = new Time(d.getTime());
PreparedStatement pst = conecta.conn.prepareStatement("Insert into cad_turno(turno)values(?)");
pst.setTime(1, timee);
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Dados gravados com sucesso!!");
} catch (ParseException ex) {
Logger.getLogger(teste.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Não foi possivel executar a gravacao" + ex.getMessage());
}
}
só que no BD ele está armazenamdo assim: "12:00:00.000000 -03:00:00" - Como eu retiro os dígitos a mais para que fique assim: "12:00:00" ?
GOSTEI 0
Eduardo Pessoa
01/05/2015
Foi com a ajuda de alguns links.
GOSTEI 0
Silvio Silveira
01/05/2015
Consegui. Eu estava tentando gravar na coluna errada do BD. Agora ta beleza. pessoal muito obrigado pela ajuda. Valeu mesmo. Obrigado.
GOSTEI 0