如何将 JDate 选择器值插入数据库
How to insert into JDate chooser value into db
我的表单中有一个 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
当我搜索此问题的解决方案时,我发现此运行时错误是由于父 class 实例正在转换为子实例 class.So 你能给我一个更正此代码的建议吗?
注意:
完成上述代码编码后,当我 select JDateChooser 中的日期显示为 2015-08-06,在上述代码之前显示为 2015 年 8 月 6 日。
试试下面的语句,
statement.setDate(3,convertUtilDateToSqlDate(jDateChooserDOB.getDate()));
statement.setDate(4, convertUtilDateToSqlDate(jDateChooserDateOfJoined.getDate()));
原因:
这是因为导入语句。您可能只在代码中导入了 java.sql.Date 或 java.sql.* 语句。您在程序中提到的所有 "Date" class 将被视为 java.sql.Date。所以 JVM 试图在这些语句中将 java.util.Date 转换为 java.sql.Date 并抛出异常。
我的表单中有一个 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
当我搜索此问题的解决方案时,我发现此运行时错误是由于父 class 实例正在转换为子实例 class.So 你能给我一个更正此代码的建议吗?
注意: 完成上述代码编码后,当我 select JDateChooser 中的日期显示为 2015-08-06,在上述代码之前显示为 2015 年 8 月 6 日。
试试下面的语句,
statement.setDate(3,convertUtilDateToSqlDate(jDateChooserDOB.getDate()));
statement.setDate(4, convertUtilDateToSqlDate(jDateChooserDateOfJoined.getDate()));
原因: 这是因为导入语句。您可能只在代码中导入了 java.sql.Date 或 java.sql.* 语句。您在程序中提到的所有 "Date" class 将被视为 java.sql.Date。所以 JVM 试图在这些语句中将 java.util.Date 转换为 java.sql.Date 并抛出异常。