public class Test {
private static void tree(Set<Article> articles, Connection conn,int id,int grade){
String sql = "select * from article where pid = "+id;
Statement stmt = DB.createStmt(conn);
ResultSet rs = DB.executeQuery(stmt,sql);
try{
while(rs.next()){

Article a = new Article();
a.setId(rs.getInt("id"));
a.setPid(rs.getInt("pid"));
a.setRootId(rs.getInt("rootid"));
a.setTitle(rs.getString("title"));
a.setLeaf(rs.getInt("isleaf") == 0?true:false);
a.setGrade(grade);
a.setPdate(rs.getTimestamp("pdate"));
articles.add(a);
if(!a.isLeaf())
tree(articles,conn,a.getId(),grade+1);
}
}catch (SQLException e){
e.printStackTrace();
}
}
public static void main(String args[])
{
Set<Article> articles = new HashSet<Article>();
Connection conn = DB.getConn();
tree(articles,conn,0,0);
DB.close(conn);
System.out.println(articles.size());
}
}数据库中的10条数据的isleaf分别是1 1 0 1 0 1 0 0 1 0
我debug运行后发现,在递归到第三次isleaf为0时再判断rs.next竟然为true,为什么?我认为执行一条SQL查询应该只查询出一行数据,resultset仅有一行数据,所以第2次判断rs.next应该为false了.请各位大仙指教.