建论坛的代码提示老是出错,求高手解答
<%@ page pageEncoding="GB18030"%>
<%@ page import="java.sql.* ,java.io.*,com.bjsxt.bbs.*,java.util.*"%>
<%!
private void tree(Set<Article> articles,Connection conn,int id,int grade){
String sql="select * from article where pid"+id;
Statement stat=DB.createstatement(conn);
ResultSet res=DB.excuteQuery(stat,sql);
try{
while(res.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.setPdate=(rs.getTimestamp("pdate"));
a.setGrade=(grade));
a.setIsleaf=(rs.getInt("isleaf")==0?true:false);
articles.add(a);
for(!a.setIsleaf()){
tree(articles,conn, a.getId(),grade+1);
}
}
} catch(SQLException e){
e.printStackTrace();
}
}
%>
<%
Set<Article> articles=new HashSet<Article>();
Connection conn=DB.getconn();
tree(articles,conn,0,0);
DB.close(conn);
%>
<%
for(Iterator<Article> it=articles.iterator();it.hasNext();){
Article a=it.next();
%>
<%
}
%>
找了好半天,还是不知道哪里错了,急求高手解答
[解决办法]
没有错误提示?
[解决办法]
我看了一下错误有很多,重构系统可以先看一下原来的代码。
1,ResultSet res=DB.excuteQuery(stat,sql);这里是res但是rs.getInt("id");这里却用rs取值。
2,a.setGrade=(grade));这句多出一个')';
3,for(!a.setIsleaf()){
tree(articles,conn, a.getId(),grade+1);
}
你这是写for 循环呢?还是if 判断?
以上会出现编译错误
4,为什么不把三块代码写在一起呢?
为什么
<%
for(Iterator<Article> it=articles.iterator();it.hasNext();){
Article a=it.next();
%>
<%
}
不直接写成
<%
for(Iterator<Article> it=articles.iterator();it.hasNext();){
Article a=it.next();
}
%>
%>
5,String sql="select * from article where pid"+id;
你用id去查询纪录。
然后
if(!a.setIsleaf()){
tree(articles,conn, a.getId(),grade+1);
}
又回调方法本身,并且同样用id去查询,不会出现死循环吗?