Java 无法遍历结果集

Java 无法遍历结果集,java,resultset,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.nex

我想使用
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.");
    }
试试看{
语句stmt=conn.createStatement();
String queryStr=“SELECT*FROM UserInfo”;
结果集rs=stmt.executeQuery(queryStr);
while(rs.next())
{
String strName=“Name是”+rs.getString(3)+“;”;
字符串intAge=“年龄为”+rs.getInt(5)+“;”;
String strCompany=“公司是”+rs.getString(4)+“
”; //int rowNum=rs.getRow(); out.println(strName+intAge+strCompany); } println(“成功访问UserInfo表”); }捕获(SQLE异常){ out.println(“查询失败”); }

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

rs.next
只会告诉您是否有下一条记录

当你跑的时候

ResultSet rs=stmt.executeQuery(queryStr);
这已经将第一条记录中的数据放入变量
rs

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


下一条记录(使用rs.next进行检查)。

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

除了字符串部分外,您的代码似乎没有问题。如果您使用字符串保存记录,则无法显示所有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();
 }
试试看{
语句stmt=conn.createStatement();
String queryStr=“SELECT*FROM UserInfo”;
结果集rs=stmt.executeQuery(queryStr);
列表=新的ArrayList();
while(rs.next()){
添加(rs.getString(3));
}
System.out.println(“行”+list.size());
}捕获(SQLE异常){
out.println(“异常”+e.getMessage());
}
最后{
rs.close();
stmt.close();
康涅狄格州关闭();
}
这是一个很好的示例,说明了应该如何使用集合对象从数据库中检索值。

您确定没有在调试器中使用类似于
rs.next()
的东西吗?你的代码应该很好。你给出的代码看起来很好,应该按照你期望的方式工作,除非它是数据库级的问题,但它看起来不是那样的问题是什么?这段代码应该可以正常工作,并得到您想要的。谢谢。我想在浏览器中输出整个表。但是现在我只得到了第一个记录器。数据库是Access 2007。谢谢。为了解决我的问题,我应该怎么做?但是我曾经看到过一些示例,通过使用“rs.next()”,表可以遍历。非常感谢您的帮助。这些教程对我非常有用。再次感谢。