首页 > 解决方案 > 无法让我的 SQL 更新我通过它传递的更改

问题描述

所以我正在处理我的项目,我想通过它传递更改并更新一行中的两列。

我询问了用户的输入

System.out.println("Which one of the reviews you would like to change?");
                List<Student> studentList = studentDao.getStudentRatings();
                for (Student students : studentList) {
                    System.out.println(students);
                }
                System.out.println("Enter your student ID");
                int student_idnumber = input.nextInt();
                input.nextLine();
                
                System.out.println("Enter your first name");
                String firstname = input.nextLine();
                
                System.out.println("Enter your last name");
                String lastname = input.nextLine();
                    
                System.out.println("Enter your new rating");
                int student_ratingnumber = input.nextInt();
                input.nextLine();
                
                System.out.println("Enter your new comments");
                String comment =  input.nextLine();
                
                
                
                studentDao.changeReview(student_idnumber, firstname,lastname, student_ratingnumber,comment);

然后我把这些传给我的 studentDao

public void changeReview(int student_idnumber, String firstname, String lastname, int student_ratingnumber,
        String comment) {
    try(Connection connection = ConnectionUtil.getConnection()){
    String sqlString = "UPDATE student_things SET student_comments = ? , student_rating = ? where student_id = ?;";
    
    PreparedStatement preparedStatement = connection.prepareStatement(sqlString);
    preparedStatement.setInt(1, student_idnumber);
    preparedStatement.setString(2, firstname);
    preparedStatement.setString(3, lastname);
    preparedStatement.setString(5, comment);
    preparedStatement.setInt(6, student_ratingnumber);
    
    
    preparedStatement.executeUpdate();
    
    System.out.println("Review was updated");
}
    catch (SQLException e) {
        System.out.println("Change review failed");
    }

但是它每次都失败,因为它不会更新表。我尝试在 postgres 中运行相同的命令并且命令有效,我尝试更改preparedstatement 的参数。不知道我做错了什么。

标签: javasqlpostgresqljdbc

解决方案


参数的顺序必须与问号的顺序一致。尤其要让你的 student_id 排在最后。


推荐阅读