Дата не может быть обновлена ​​в jdbc (с использованием подготовленного заявления) - PullRequest
0 голосов
/ 18 июня 2019

Итак, моя проблема в том, что я хочу разрешить пользователю изменять дату доставки продукта в соответствии с тем, что он хочет.Так что я сделал, что я собираю год, месяц и день от пользователя и преобразовываю его в формат даты, требуемый SQL.Все данные были в порядке, но всякий раз, когда я хотел обновить дату доставки, она не обновляется и не отображает ошибку.

Я использовал данные, полученные от пользователя, чтобы установить год, месяц в классе календаря.и датаЗатем я преобразовал дату в 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 (старый вывод)

...