我使用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){
}
}
答案 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