无法在jdbc(使用预备语句)中更新日期

时间:2019-06-18 04:16:02

标签: java date jdbc sql-update prepared-statement

所以我的问题是我想允许用户根据他们想要的内容更改产品的发货日期。所以我要做的是收集用户的年,月和日输入并将其转换为SQL所需的日期格式。所有输入都很好,但是每当我想更新发货日期时,它都不会更新,也不会显示错误。

我使用从用户那里获得的输入来设置Calendar类的年,月和日。然后我将日期转换为java.util.Date,然后再将其转换为java.sql.Date

 //sql query
private static final String UPDATESHIPPINGDATE = "UPDATE book SET shippingDate = ? WHERE orderID = ? ";

//Required format for SQL
private static final String DATE_FORMAT_NOW = "yyyy-MM-dd";

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);

//The method
 public void updateShippingDate(int orderID, int year,int month,int day){
        try(Connection con = DBConnection.getConnection();
            PreparedStatement stmtUpdate = con.prepareStatement(UPDATESHIPPINGDATE);
            PreparedStatement stmtShippingDate = con.prepareStatement(GETSHIPPGINGDATE);
            ){

            cal.set(Calendar.YEAR,year);
            cal.set(Calendar.MONTH,(month-1));
            cal.set(Calendar.DATE,(day-1));

            Date dateConvert = cal.getTime();
            java.sql.Date shippingDate = new java.sql.Date(dateConvert.getTime());

            stmtUpdate.setInt(1,orderID);
            stmtUpdate.setDate(2,shippingDate);

            stmtUpdate.executeUpdate();

            stmtShippingDate.setInt(1,orderID);
            ResultSet result = stmtShippingDate.executeQuery();

            while (result.next()){
                System.out.println("Your new shipping date: " + result.getDate("shippingDate"));
            }

        }catch (Exception e){
            System.out.println(e);
        }
    }

预计:2019-06-20(更新输出) 输出为:2019-06-24(旧输出)

0 个答案:

没有答案