Java - 如何从数据库中获取所有行数据

时间:2014-12-17 23:00:34

标签: java mysql swing

我使用java swing GUI制作简单的实验室管理系统,我需要从数据库表中打印出所有患者数据,但我找不到如何从数据库中检索所有行数据。使用以下代码,我只获得最后一行数据。

private void inner_search_btnActionPerformed(java.awt.event.ActionEvent evt) {                                                 
    String search = this.search_field.getText();
    String name = null;
    try{
        if(search.trim().length() == 0){
            this.results_field.setText("Please fill in search field !!!");
        }
        else
        {
            String query = "select * from lab_tests";
            rs = st.executeQuery(query);



            int i =0;

            while(rs.next())
            {                   
                i++;
                name = rs.getString("patient_name");                
                this.results_field.setText("<html>" + name + "<br></html>");
            }

        }
    }
    catch(Exception ex){

    }
}   

2 个答案:

答案 0 :(得分:2)

您每次都在替换文本。这就是您只获得最终数据库记录的原因。使用jtextarea代替jtextfield并使用追加方法

textArea.append(name + "\n");

或者您可以使用stringBuilder

答案 1 :(得分:0)

最好是建立一个域类,比如

class Patient {
 private String fName;
 private String lName;
 private int age;

 public void setfName(String s){fName=s;}
 public String getfName(){return fName;}

 public void setlName(String s){lName=s;}
 public String getlName(){return lName;}

 public void setAge(Int i){age=i;}
 public int getAger(){return age;}

}

在您从数据库获取数据的函数中:

public ArrayList<Patient> getPatients(){

 public ArrayList<Patient> pList= new ArrayList<Patient>();

// part where you do you query on DB

 while(rs.next())
            {                   
                Patient p = new Patient();
                p.setfName(rs.getString("patient_name"));                
                p.setlName(rs.getString(2));
                p.setAge(rs.getInt(3));
                pList.add(p);
            }

 return pList;

}

然后将该数据添加到Jtable