繁体   English   中英

从JDateChooser插入日期到Oracle DB

[英]Inserting date from JDateChooser to Oracle DB

我在将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? 谢谢。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM