<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
<%@ page import="java.sql.*"%>
<%!
String str=""; private void tree(Connection conn,int id){
ResultSet rs=null;
Statement stmt=null;
String sql="select * form article where pid= "+id; try{ stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
str += "<tr><td>"+rs.getInt("id")+"</td><td>"+rs.getString("title")+"</td></tr>";
if(rs.getInt("isleaf")!=0){
tree(conn,rs.getInt("id"));
}
}
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs=null;
}
if(stmt!=null){
stmt.close();
stmt=null;
}}catch(SQLException e){
e.printStackTrace();
}
}

}
%>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;Databasename=bbs","sa","sa");
out.print("dwa");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from article where pid=0");
while(rs.next()){
str += "<tr><td>"+rs.getInt("id")+"</td><td>"+rs.getString("title")+"</td></tr>";
if(rs.getInt("isleaf")!=0){
try{
tree(conn,rs.getInt("id"));
}
catch(Exception e){
out.print("dwadwa121421");
e.printStackTrace();
}
}
}
rs.close();
stmt.close();
conn.close();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
</head>
<body>
<table border="1">
<%= str%>
</table>
</body></html>报错
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 1.
好像是第49行  tree(conn,rs.getInt("id"));
希望高手帮忙看下

解决方案 »

  1.   

    ResultSet是个特殊的东东,只能读一次。所以建议先采用变量保存int i = rs.getInt("id"),然后在要使用rs.getInt("id")的时候用i代替
      

  2.   

    库里id pid  有值吗
      

  3.   

    ResultSet从数据表中提取数据时,要按照数据表字段的顺序来提取,也就是说当数据库表的字段顺序是ID,NAME,那么提取顺序就不能是getString(name);getInt(ID)
      

  4.   

    VERG GOOD 成功了;
    但是我们我看的视频他是这样写的就可以用呢。