【问题标题】:How to insert into JDate chooser value into db如何将 JDate 选择器值插入到数据库中
【发布时间】:2015-11-12 04:59:50
【问题描述】:

我的表单中有一个 JDateChooser。我需要将它的日期值插入数据库。 我在“public class Nonacademic extends javax.swing.JInternalFrame {”之后使用了这个方法,

而我使用的方法如下所述,

public static java.sql.Date convertUtilDateToSqlDate(java.util.Date date){

                if(date != null) {
                java.sql.Date sqlDate = new java.sql.Date(date.getTime());
                    return sqlDate;
                    }
                JOptionPane.showMessageDialog(null, "No Dates are      Specified!");
                return null;
                }

在我使用的添加按钮的 actionPerformed 事件中

             Connection c=DBconnect.connect();
             Statement s = (Statement) c.createStatement();
             PreparedStatement statement =  c.prepareStatement("INSERT into nonacademic ( empId, name, Dob, JoinedDate) VALUES (?,?,?,?)");

           statement.setString(1,txtEmpId.getText());
           statement.setString(2, txtNmae.getText());
           statement.setDate(3,convertUtilDateToSqlDate( (Date)     jDateChooserDOB.getDate()));
           statement.setDate(4, convertUtilDateToSqlDate( (Date) jDateChooserDateOfJoined.getDate()));

statement.executeUpdate();

问题是它给出了这个错误, java.lang.ClassCastException: java.util.Date 不能转换为 java.sql.Date

当我寻找解决方案时,我发现这个运行时错误是由于父类实例被强制转换为子类。所以你能给我一个更正这个代码的建议吗?

注意: 当我在 JDateChooser 中选择一个日期时完成上面的代码编码后,它显示为 2015-08-06,之前的代码显示为 2015 年 8 月 6 日。

【问题讨论】:

  • 您是否尝试过在您的statement.setDate 通话中摆脱(Date)
  • 当我输入 statement.setDate(3,convertUtilDateToSqlDate(jDateChooserDOB.getDate())); (如果没有(日期),它会显示一个错误并显示一条消息,说要投射它。
  • 那么,jDateChooserDOB.getDate() 可能不会返回 java.util.Date,猜测...

标签: java phpmyadmin java.util.date jdatechooser


【解决方案1】:

试试下面的语句,

statement.setDate(3,convertUtilDateToSqlDate(jDateChooserDOB.getDate()));
statement.setDate(4, convertUtilDateToSqlDate(jDateChooserDateOfJoined.getDate()));

原因: 这是因为 import 语句。您可能只在代码中导入了 java.sql.Date 或 java.sql.* 语句。您在程序中提到的所有“日期”类都将被视为 java.sql.Date。所以 JVM 试图在这些语句中将 java.util.Date 转换为 java.sql.Date 并抛出异常。

【讨论】:

  • 我在我的代码中导入了 java.util.Date,正如你在这里提到的,我只导入了 java.sql.Date 然后我从 statement.setDate 中删除了(日期)。我的问题已经解决了,但我仍然很困惑一件事,即从导入 java.util.Date 它如何将父实例(java.util.date)转换为子实例(java.sql.date)有人可以给我吗请给出一个清晰的解释,这对我提高我的java知识很有用:-) :-)
  • 我在我的代码中导入 java.util.Date。正如你在这里提到的,我只导入了 java.sql.Date 然后我从 statement.setDate 中删除了(日期)。我的问题已经解决了,但我仍然对从导入 java.util.Date 将父实例(java.util.date)转换为子实例(java.sql.date)的一件事感到困惑。请给我一个明确的解释,这对我提高我的java知识很有用:-) :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多