无法从记录集中检索多个结果

时间:2013-07-08 07:16:41

标签: java jdbc

此代码仅从数据库中检索1条记录。

如何使用下一个按钮

从数据库中检索其余记录
public void Next()
{
  Connection con=null;
  ResultSet rs=null;

  try {
    con=DBConnection();
    Statement stmt=con.createStatement();
    rs= stmt.executeQuery("select * from info where id=1");

    while(rs.next())
    {            
      t1.setText(rs.getString("Name"));
      t2.setText(rs.getString("Branch"));             
    }
  } catch (Exception e) {
    // TODO: handle exception
  }finally{
    try {
      rs.close();
    } catch (SQLException err) {
      JOptionPane.showMessageDialog(btnnext, err.getMessage());
      // TODO: handle exception
    }
  }
  //return rs;
}

4 个答案:

答案 0 :(得分:3)

首先在两步中执行此操作:

在next()方法之外创建数据库连接,除非您无法获取其他记录:

    Connection con=null;
    ResultSet rs=null;

    try {
        con=DBConnection();
        rs = con.createStatement().executeQuery("select * from info where id=1");
    }

其次,迭代查询:

public boolean Next()

{
 if(!rs.next()) { //if no next then we should deactivate the next button
   return false;
  } else {
  t1.setText(rs.getString("Name"));
  t2.setText(rs.getString("Branch")); 
  return true;
  }
}

另外请确保以下查询:

  

从信息中选择*,其中id = 1

将返回超过1行,您可以尝试使用没有where的查询并返回更多行。

答案 1 :(得分:1)

将数据放入列表

List<SomeObject> list = new ArrayList();
        while(rs.next())
                     {
          SomeObject obj = new SomeObject();
          obj.setName(rs.getString("Name"));
          obj.setBranch(rs.getString("Branch"));
          list.add(obj);
                     }

现在您可以使用列表来提取数据。

和SomeObject:

  public class SomeObject {

    String name;
    String branch;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBranch() {
        return branch;
    }

    public void setBranch(String branch) {
        this.branch = branch;
    }

}

答案 2 :(得分:0)

我假设Next() 1 是每次按下按钮时执行的方法。如果是这样,那么您需要确保将ResultSet 保存在此方法之外,以便每次按下按钮时都可以循环显示结果。

目前,您正在执行查询,然后在每次按下按钮时循环到最后一条记录。

1 使用Java naming conventions并使用小写'n'开始您的方法

答案 3 :(得分:0)

在While循环中的

setText()没有意义。它总会让你回到最后一排。 您应该将您的记录放在While循环中的列表中,并在外面执行您想要的任何操作。