JAVA - 我的下一个按钮不能正常工作,但它 returns 只有第一行 ID

JAVA - my next button is not working right but it returns the first row ID only

我是 java 编程的新手,我对自己在做什么感到困惑,尽管有些是不言自明的,我可以理解。但是用我的代码我不知道到底出了什么问题。我可以从数据库中插入数据,但是当我用我当前的代码单击下一步时,它 returns 只有 ID 字段没有填充其他文本框,它也 returns 第一行。

这是我的下一个按钮代码

    private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {                                        
    try{
        String url = "jdbc:derby://localhost:1527/mim";
        String username = "is2560";
        String password = "is2560";
        Connection conn = DriverManager.getConnection(url,username,password);
        Statement stmt = conn.createStatement(
                                ResultSet.TYPE_SCROLL_INSENSITIVE,
                                ResultSet.CONCUR_READ_ONLY);
        String query = "SELECT * from students";
        rs = stmt.executeQuery(query);           
        if (rs.next()){
            int ID = rs.getInt("ID");
            String id = Integer.toString(ID);
            String Fname = rs.getString("FNAME");
            String Mname = rs.getString("MNAME");
            String Lname = rs.getString("LNAME");
            String Stdno = rs.getString("STUDENTNO");
            String Course = rs.getString("COURSE");

            txtCourse.setText(Course);
            txtFName.setText(Fname);
            txtMname.setText(Mname);
            txtLname.setText(Lname);
            txtStdnt.setText(Stdno);
            txtID.setText(id);
        }
        else {
            rs.previous();
            JOptionPane.showMessageDialog(this, "End of File");
        }
    }
    catch (SQLException err){
        JOptionPane.showMessageDialog(this, err.getMessage());
    }
}                                       

兄弟而不是 if (rs.next()){ 这行你必须使用

while(rs.next()){

试试打电话给我

步骤 1 创建 class Student:

public class Student {

  private int mId;
  private String mFirstname;
  private String mLastName;
  private String mMName;
  private String mInfo;
  private String mCourse;
  public int getId() {
    return mId;
  }
  public void setId(int pId) {
    this.mId = pId;
  }
  public String getFirstname() {
    return mFirstname;
  }
  public void setFirstname(String pFirstname) {
    this.mFirstname = pFirstname;
  }
  public String getLastName() {
    return mLastName;
  }
  public void setLastName(String pLastName) {
    this.mLastName = pLastName;
  }
  public String getMName() {
    return mMName;
  }
  public void setMName(String pMName) {
    this.mMName = pMName;
  }
  public String getInfo() {
    return mInfo;
  }
  public void setInfo(String pInfo) {
    this.mInfo = pInfo;
  }
  public String getCourse() {
    return mCourse;
  }
  public void setCourse(String pCourse) {
    this.mCourse = pCourse;
  }
}

步骤 2 在您中定义 2 class 个成员 class:

private List<Student> mAllStudent = new ArrayList<>;
private int mClickIndex = 0;

步骤 3 从 derby 加载所有学生:

private void loadAllStudent(java.awt.event.ActionEvent evt) {                                        
    try{
        String url = "jdbc:derby://localhost:1527/mim";
        String username = "is2560";
        String password = "is2560";
        Connection conn = DriverManager.getConnection(url,username,password);
        Statement stmt = conn.createStatement(
                                ResultSet.TYPE_SCROLL_INSENSITIVE,
                                ResultSet.CONCUR_READ_ONLY);
        String query = "SELECT * from students";
        rs = stmt.executeQuery(query);           
        while (rs.next()){
            Student lStudent = new Student();
      lStudent.setId(rs.getInt("ID"));
      lStudent.setFirstname(rs.getString("FNAME"));
      lStudent.setLastName(rs.getString("LNAME"));
      lStudent.setMName(rs.getString("MNAME"));
      lStudent.setInfo(rs.getString("STUDENTNO"));
      lStudent.setCourse(rs.getString("COURSE"));
      mAllStudent.add(lStudent);


        }
        else {
            rs.previous();
            JOptionPane.showMessageDialog(this, "End of File");
        }
    }
    catch (SQLException err){
        JOptionPane.showMessageDialog(this, err.getMessage());
    }
}  

第 4 步实现 nextButton 逻辑:

private void showNext(){
   if (mClickIndex == mAllStudent.size()){
      mClickIndex = 0; // start at beginning after end is reached.
   }
   Student lStudent = mAllStudent.get(mClickIndex);
   mClickIndex++;
   if (null != lStudent){
        txtCourse.setText(lStudent.getCourse());
        txtFName.setText(lStudent.getFirstname());
        txtMname.setText(lStudent.getMName());
        txtLname.setText(lStudent.getLastname());
        txtStdnt.setText(lStudent.getInfo());
        txtID.setText(lStudent.getId());
   }
}

在你调用 showNext 之前,你必须加载所有学生,例如在你的构造函数中 class 或者在 init 方法中,如果你有的话。