更新方法未在 CRUD 应用程序中更新

Update method not updating in CRUD application

我已经使用 Java 和 MySQL 创建了 CRUD 应用程序,但它不会更新。

这是输入的助手class:

public class InputHelper {

    public static String getInput(String prompt) {
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        System.out.print(prompt);
        System.out.flush();

        try {
            return stdin.readLine();
        } catch (Exception e) {
            return "Error: " + e.getMessage();
        }
    }

    public static double getDoubleInput(String prompt) {
        String input = getInput(prompt);
        return Double.parseDouble(input);
    }

    public static int getIntegerInput(String prompt) {
        String input = getInput(prompt);
        return Integer.parseInt(input);
    }

    public static Date getDateInput(String prompt) {
        String input = getInput(prompt);
        return Date.valueOf(input);
    }

    public static boolean getBooleanInput(String prompt) {
        String input = getInput(prompt);
        return Boolean.parseBoolean(input);
    }
}

我是学生管理员class:

public class StudentManager {

    private static final Student student = new Student();
    private static final Connection conn = DBConnectionUtil.getConnection();
    private static ResultSet rs = null;


      public static Student getRow(int studentId){
        String sql = "SELECT * FROM student WHERE id = ?";


        try(PreparedStatement ps = conn.prepareStatement(sql);){

            ps.setInt(1, studentId);
            rs = ps.executeQuery();

            if(rs.next()){

                student.setStudentId(studentId);
                student.setFirstName(rs.getString(2));
                student.setLastName(rs.getString(3));
                student.setDateOfBirth(rs.getDate(4));
                student.setOnBudget(rs.getBoolean(5));
                return student;
            }else{
                System.err.println("No rows found");
                return null;
            }
        } catch (SQLException ex) {
            DBConnectionUtil.proccessException(ex);
        }finally{
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException ex) {
                   DBConnectionUtil.proccessException(ex);
                }
            }
        }
        return null;

    }
    ........

    public static void update(Student student){
        String sql = "UPDATE student SET firstName = ?, lastName = ?, dateOfBirth = ?, onBudget = ? WHERE id = ?";
        try(PreparedStatement ps = conn.prepareStatement(sql);){

            ps.setString(1, student.getFirstName());
            ps.setString(2, student.getLastName());
            ps.setDate(3, student.getDateOfBirth());
            ps.setBoolean(4, student.isOnBudget());
            ps.setInt(5, student.getStudentId());

            int rowsUpdated = ps.executeUpdate();
            if(rowsUpdated > 0){
                System.out.println("User updated");
            }else{
                System.err.println("Something went wrong.");
            }
        } catch (SQLException ex) {
            DBConnectionUtil.proccessException(ex);
        }
    }
}

这是主要的 class:

public class Main {

    public static void main(String[] args) throws SQLException {

        StudentManager.displayAllStudents();


        int studentId = InputHelper.getIntegerInput("Select row to update: ");

        Student student = StudentManager.getRow(studentId);
        if(student == null){
            System.err.println("Row not found");
        }


         student.setFirstName(InputHelper.getInput("Enter new first name: "));
         student.setLastName(InputHelper.getInput("Enter new last name: "));
         student.setDateOfBirth(InputHelper.getDateInput("Enter new date of birth: "));
         student.setOnBudget(InputHelper.getBooleanInput("Is on budget? "));

         StudentManager.update(student);

    }

}

在 main class 中,我更改了以下....来自:

  student.setFirstName(InputHelper.getInput("Enter new first name: "));
  student.setLastName(InputHelper.getInput("Enter new last name: "));
  student.setDateOfBirth(InputHelper.getDateInput("Enter new date of birth: "));
  student.setOnBudget(InputHelper.getBooleanInput("Is on budget? "));

  StudentManager.update(student);

为此:

    String firstName = InputHelper.getInput("Enter new first name: ");
    student.setFirstName(firstName);

    String lastName = InputHelper.getInput("Enter new last name: ");
    student.setLastName(lastName);

    Date dob = InputHelper.getDateInput("Enter new date ");
    student.setDateOfBirth(dob);

    boolean onBudget = InputHelper.getBooleanInput("Is on budget? ");
    student.setOnBudget(onBudget);


    StudentManager.update(student);

现在更新方法有效,数据库已更新,我可以显示更改。