【问题标题】:Inserting date from JDateChooser to Oracle DB将日期从 JDateChooser 插入 Oracle DB
【发布时间】:2016-07-28 11:14:47
【问题描述】:

我无法将 jDateChooser 的日期插入到我的 oracle 数据库中。下面是staffDisplay 类中的动作事件。

`public void saveButtonPressed(ActionEvent e){
         try{
            int result = staff.addStaff(
                    firstNameTextField.getText(),
                    lastNameTextField.getText(),
                    dateOfBirthDateChooser.getDate(),
                    departmentTextField.getText(),
                    Double.parseDouble(salaryTextField.getText()),
                    startDateDateChooser.getDate(),
                    Boolean.parseBoolean(fullTimeTextField.getText()));

            if(result == 1){//it worked
                JOptionPane.showMessageDialog(this,"Staff Member Added Successfully");
            }else{//didn't work
                JOptionPane.showMessageDialog(this, "Error Occured - Staff member was not added");
            }`

这是准备好的语句在不同的类中。

 `public class StaffQueries {
private static final String URL = "jdbc:oracle:thin:@localhost:1521:xe";
private static final String USERNAME = "xxx";
private static final String PASSWORD = "xxx";

private Connection con;

private PreparedStatement insert = null;

 public StaffQueries() {

    try{
        Class.forName("oracle.jdbc.driver.OracleDriver");
        con = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        System.out.println("Drivers loaded and connection made");

        insert = con.prepareStatement("INSERT INTO STAFF " + "(StaffID, FirstName, LastName, DateOfBirth, Department, Salary, StartDate, Fulltime)"
                + "VALUES(ColmStaffSequence.NextVal,?,?,?,?,?,?,?)");

    }catch(SQLException e){
        System.out.println("something went wrong with the DataBase");
        e.printStackTrace();
        System.exit(1);

    }catch(Exception e){
        System.out.println("something went wrong when loading the drivers");
        e.printStackTrace();
        System.exit(2);

    }
}

 public int addStaff(String fn, String ln, Date dob, String d, double sal, Date sd, boolean ft){

        int results = 0;

        try{
            //fill in the missing parameters for the prepared insert statement
            insert.setString(1, fn);
            insert.setString(2, ln);
            insert.setDate(3, dob);
            insert.setString(4, d);
            insert.setDouble(5, sal);
            insert.setDate(6, sd);
            insert.setBoolean(7, ft);

            //execute the prepared insert statement
            results = insert.executeUpdate();
        } catch (SQLException e){
            e.printStackTrace();
            close();
        }
        return results;
    }`

有错误信息说

   `Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: 
The method addStaff(java.lang.String, java.lang.String, java.sql.Date, java.lang.String, double, java.sql.Date, boolean) in the type StaffQueries is not applicable for the arguments (java.lang.String, java.lang.String, java.util.Date, java.lang.String, double, java.util.Date, boolean)`

所以我认为插入到 jdatechooser 的日期输入为 java.util.date,我需要它是 java.sql.date?如果这是问题?如果是这样,我如何将其转换为 java.sql.date?谢谢。

【问题讨论】:

  • 在 StaffQueries 中将导入从 java.sql.Date 更改为 java.util.Date
  • 我改变了这个并且出现了一个新的异常。 java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date。我理解为什么 util.date 不能转换为 sql.date 但我不知道如何在代码中更正这一点。你有什么建议吗?

标签: java oracle java.util.date


【解决方案1】:

您可以使用new java.sql.Date(long milis) 并使用startDateDateChooser.getDate().getTime() 获取所选日期的毫秒数

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    相关资源
    最近更新 更多