我对此有一些疑问,我已经浏览了其他主题,但我仍然无法让代码正常工作。
我的目的是使用 JDBC 将日期插入到我的数据库中,我使用的是 jTextField (或 JformattedField,尝试两种方法),而我得到的只是来自数据库的错误。因为我发送的是文本而不是日期,所以我如何发送日期?
EDIT1:我正在尝试发送出生日期。
已经做了一些尝试,这就是我的原因:
SimpleDateFormat formatter = new SimpleDateFormat ("dd/MM/yyyy");
java.sql.Date data = new java.sql.Date(formatter.parse().getTime());
代码:
try {
conecta.conn.setAutoCommit(false);
PreparedStatement pst = conecta.conn.prepareStatement("INSERT INTO cad_pessoa(cad_cpf,cad_nome, cad_idade, cad_apelido, cad_data) values (?,?,?,?,?)");
pst.setString(1, jFormattedTextFieldCPF.getText()); //pega o texto insirido e armazena no banco de dados
pst.setString(2, jTextFieldNOME.getText()); //pega o texto insirido e armazena no banco de dados
pst.setString(3, jTextFieldIDADE.getText()); //pega o texto insirido e armazena no banco de dados
pst.setString(4, jTextFieldApelido.getText());//pega o texto insirido e armazena no banco de dados
SimpleDateFormat formatter = new SimpleDateFormat ("dd/MM/yyyy");
java.sql.Date data = new java.sql.Date(formatter.parse().getTime());
pst.setDate(5, formatter.parse(jFormattedTextFieldDATA.getText())); //pega o texto insirido e armazena no banco de dados
pst.executeUpdate(); //executa o SQL
conecta.conn.commit();
jFormattedTextFieldCPF.setText(""); //deixa o campo vazio
jTextFieldNOME.setText(""); //deixa o campo vazio
jTextFieldIDADE.setText(""); //deixa o campo vazio
jFormattedTextFieldDATA.setText("");
jTextFieldApelido.setText(""); //deixa o campo vazio
jFormattedTextFieldCPF.setEnabled(false);
jTextFieldNOME.setEnabled(false);
jTextFieldIDADE.setEnabled(false);
jFormattedTextFieldDATA.setEnabled(false);
jTextFieldApelido.setEnabled(false);
JOptionPane.showMessageDialog(null, "Salvo!");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(rootPane, "Erro!\n" +ex);
}
最佳答案
您使用的 setInt()
方法适用于整数值,并且它接受整数。要设置日期,请使用 PreparedStatement.setDate()
方法。
从 parse()
方法获得的 java.util.Date
也应该转换为 java.sql.Date
。
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date utilDate = formatter.parse(jFormattedTextFieldDATA.getText());
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
pst.setDate(5, sqlDate);
请参阅有关 PreparedStatement
类的文档:https://docs.oracle.com/javase/9/docs/api/java/sql/PreparedStatement.html
关于java - 将日期发送到 postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69436566/