时间: 2021-07-31 作者:daque
实行乒坛树型构造的算法很多,简直你不妨去www.chinaasp.com的全文探求中查问。我此刻的jsp乒坛沿用的也是傍边的一种:不必递归实行树型构造的算法,此刻我将乒坛树型构造的简直算法和大师引见一下,和大师一道交谈。 1。演练表的构造: 表名:mybbslist 字段 数据典型 证明 bbsid 机动编号 rootid int 根帖id,自己为根帖则rootid = id fid int 父帖id,上一层帖子的id,如是根帖则fid = 0 depth int 根帖level=0,其余按照恢复的深度递加 bbssubject char 中心 2。创造表: create table mybbslist ( forumid int(20) not null, bbsid int auto_increment primary key, rootid int(20) not null, fid int(20) not null, depth int(20) not null, userid int(20) not null, bbsuser varchar(24) not null, bbssubject varchar(100) not null, bbscontent text, bbstime varchar(30), bbsread int(20), bbsreply int(20), index forumid (forumid)) 3。贯穿mysql数据库的bean package netzero; import java.sql.*; public class mydb { string drivername = "org.gjt.mm.mysql.driver"; connection conn = null; statement stmt = null; resultset rs = null; string connurl= "jdbc:mysql://localhost/mybbs?user=root&password=how&useunicode=true&characterencode=8859_1"; //string connurl= "jdbc:mysql://localhost/netzerobbs?user=root&password=how"; public mydb() { try { class.forname(drivername); } catch (java.lang.classnotfoundexception e) { system.err.println("netzero(string): " + e.getmessage()); } } public resultset executequery(string sql) throws sqlexception { conn = drivermanager.getconnection(connurl); stmt = conn.createstatement(); rs = stmt.executequery(sql); return rs; } public boolean closeconn() { try { if (rs!=null) rs.close(); if (stmt!=null) stmt.close(); if (conn!=null) conn.close(); return true; } catch ( sqlexception ex ) { system.err.println("closeconn: " + ex.getmessage()); return false; } } } 4。表露乒坛的jsp步调 <jsp:usebean id="mybbs" scope="session" class="netzero.mydb" /> <%@ page contenttype="text/html;charset=utf8" %> <%@ page import="java.io.*" %> <%@ page import="java.sql.*" %> <% int introwcount; out.print("表露乒坛树形构造"); out.print("<br><br>"); try { string sql="select * from mybbslist order by rootid desc,depth,fid,bbsid"; resultset rs = mybbs.executequery(sql); if (rs.next()) { rs.last(); introwcount=rs.getrow(); out.print("乒坛树中有"); out.print(introwcount); out.print("个叶子节点"); rs.first(); int j=0; int depth = 0; out.print("<ul>"); while(j<introwcount) { int rsdepth=rs.getint("depth"); if (rsdepth<depth) { for(int i=1;i<depth+1;i=i+1) { out.print("</ul>"); } } rsdepth=rs.getint("depth"); if (rsdepth>depth) { out.print("<ul>"); } out.print("<li>"); string bbssubject=rs.getstring("bbssubject"); out.print(bbssubject); out.print("</li>"); depth = rs.getint("depth"); j=j+1; rs.next(); } out.print("</ul>"); } else { out.print("数据库中无记载"); } }catch (sqlexception e) { out.println("sqlexception: " + e.getmessage()); out.println("sqlstate: " + e.getsqlstate()); out.println("vendorerror: " + e.geterrorcode()); } %> <% //封闭mysql贯穿 try { if(!mybbs.closeconn()); } catch (exception ex) { system.err.println("closeconn: " + ex.getmessage()); } %> 算法参考:http://www.chinaasp.com/sqlbbs/showessence.asp?id=4783