我想使用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();
。我应该如何处理这个问题?
答案 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游标最初位于第一行之前;对方法的第一次调用使第一行成为当前行;