【问题标题】:Can't get my SQL to update the changes I passed through it无法让我的 SQL 更新我通过它传递的更改
【发布时间】:2021-09-12 06:21:46
【问题描述】:

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

我询问了用户的意见

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 中运行相同的命令并且命令有效,我尝试更改准备好的语句的参数。不知道我做错了什么。

【问题讨论】:

    标签: java sql postgresql jdbc


    【解决方案1】:

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

    【讨论】:

    • 你是说我应该把public void changeReview(int student_idnumber, String firstname, String lastname, int student_ratingnumber, String comment) 改成public void changeReview(String comment, int student_ratingnumber, int student_id, String firstname, String lastname)
    • 不,您应该更改将值添加到准备好的语句的顺序。数字必须与 SQL 字符串中问号的顺序相匹配。
    • 您应该添加“订单”,您的意思是set* 方法的第一个参数。
    • 哦,原来如此,`preparedStatement.setInt(1, student_idnumber); PreparedStatement.setString(2, firstname); PreparedStatement.setString(3, lastname); PreparedStatement.setString(5, 评论); preparedStatement.setInt(6, student_ratingnumber);` 类似于`preparedStatement.setString(4, comment); PreparedStatement.setInt(5, student_ratingnumber); PreparedStatement.setInt(6, student_id);`
    • 第一个参数中的数字是指你要设置哪个问号的位置,而不是表格中列的顺序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多