java - 将日期发送到 postgresql

标签 java sql jdbc

我对此有一些疑问,我已经浏览了其他主题,但我仍然无法让代码正常工作。

我的目的是使用 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/

相关文章:

java - JTable 不显示输出

java - 线程似乎在一段时间后就自杀了?

sql - 删除所有找不到 JOIN 的行?

c# - 使用 C# 预准备语句的 SQL Server 计数

mysql - 更新mysql中的查询与mssql中的结果不一样

java - 使用 JDBC Statement 或PreparedStatement 执行一组查询

java - 如何从祖父类调用方法?

java - 来自 IntBuffer Java 的图像

java - 使用guava将集合映射到id

java - Java 中具有多个条件的 Oracle UPDATE 命令