我有一个JDateChooser在我的表单。我需要插入它的日期值到DB。我在"公共类Nonacademic扩展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(3,convertUtilDateToSqlDate(jDateChooserDOB.getDate()));
statement.setDate(4, convertUtilDateToSqlDate(jDateChooserDateOfJoined.getDate()));
原因:这是因为import语句。您可能只导入了java.sql. date或java.sql。*语句。您在程序中提到的所有"Date"类都将被视为java.sql.Date。所以JVM试图在这些语句中将java.util.Date转换为java.sql.Date并抛出异常。