无法遍历结果集

时间:2014-10-28 06:58:59

标签: java resultset

我想使用while(rs.next())遍历UserInfo表。 UserInfo表中有七条记录,但我只获得了第一条记录。在我加入rs.getRow();的代码后,我得到了我想要的结果。

try{
    Statement stmt=conn.createStatement();
    String queryStr="SELECT * FROM UserInfo";
    ResultSet rs=stmt.executeQuery(queryStr);

    while(rs.next())
    {
        String strName="Name is "+rs.getString(3)+";";
        String intAge="Age is "+rs.getInt(5)+";";
        String strCompany="Company is "+rs.getString(4)+".<br>";
        //int rowNum=rs.getRow();
        out.println(strName+intAge+strCompany);
    }

    out.println("Succeed in visiting UserInfo table.");
    }catch(SQLException e){
        out.println("Failed to query.");
    }

我不想使用rs.getRow();。我应该如何处理这个问题?

3 个答案:

答案 0 :(得分:1)

除了String部分之外,你的代码似乎没有问题。如果你使用String来保存记录,那么你将无法显示所有7条记录。

因此尝试使用像ArrayList这样的集合对象。当然,你应该在finally块中关闭连接。

try{
  Statement stmt=conn.createStatement();
  String queryStr="SELECT * FROM UserInfo";
  ResultSet rs=stmt.executeQuery(queryStr);
  List<String> list = new ArrayList<String>();  

  while(rs.next()){

    list.add(rs.getString(3));

  }

 System.out.println("rows "+list.size());
 }catch(SQLException e){
    out.println("exception "+e.getMessage());
 }
 finally{
 rs.close();
 stmt.close();
 conn.close();
 }

这是您应该如何使用集合对象从数据库中检索值的一个很好的示例。 http://theopentutorials.com/tutorials/java/jdbc/how-to-retrieve-all-rows-from-mysql-table-using-jdbc/

答案 1 :(得分:0)

rs.next 仅告诉您是否有下一条记录。

运行时

ResultSet rs=stmt.executeQuery(queryStr);

这已经将第一条记录中的数据放入变量rs

为了前进到下一条记录,您需要运行rs.getRow,但前提是

下一条记录(请查看rs.next)。

答案 2 :(得分:0)

rs.next()将光标从当前位置向前移动一行。 ResultSet游标最初位于第一行之前;对方法的第一次调用使第一行成为当前行;