收录日期:2020/05/29 13:51:36 时间:2016/07/04 20:01:58 标签:Web 开发
showtree.jsp
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<%@ page import="java.sql.*"%>
<%!String str = "";

private void tree(Connection conn, int id, int level) {
Statement stmt = null;
ResultSet rs = null;
String prestr = "";
for (int i = 0; i < level; i++) {
prestr += "----";
}
try {
stmt = conn.createStatement();
String sql = "select * from article where pid" + id;
rs = stmt.executeQuery(sql);
while (rs.next()) {
str += "<tr><td>" + rs.getInt("id") + "</td><td>"
+ prestr + rs.getString("cont") + "</td></tr>";
if(rs.getInt("isleaf") != 0) {
tree(conn, rs.getInt("id"), level+1);
}
}
} 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.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/bbs?user=root&password=root";
Connection conn = DriverManager.getConnection(url);

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("cont") + "</td></tr>";
if (rs.getInt("isleaf") != 0) {
tree(conn, rs.getInt("id"), 1);
}
}
rs.close();
stmt.close();
conn.close();
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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>
以下是数据库脚本
bbs.sql
create database bbs;

use bbs;

create table article 
(
id int primary key auto_increment,
pid int,
rootid int,
title varchar(255),
cont text,
pdate datetime,
isleaf int 
);

insert into article values (null, 0, 1, '蚂蚁大战大象', '蚂蚁大战大象', now(), 1);
insert into article values (null, 1, 1, '大象被打趴下了', '大象被打趴下了',now(), 1);
insert into article values (null, 2, 1, '蚂蚁也不好过','蚂蚁也不好过', now(), 0);
insert into article values (null, 2, 1, '瞎说', '瞎说', now(), 1);
insert into article values (null, 4, 1, '没有瞎说', '没有瞎说', now(), 0);
insert into article values (null, 1, 1, '怎么可能', '怎么可能', now(), 1);
insert into article values (null, 6, 1, '怎么没有可能', '怎么没有可能', now(), 0);
insert into article values (null, 6, 1, '可能性是很大的', '可能性是很大的', now(), 0);
insert into article values (null, 2, 1, '大象进医院了', '大象进医院了', now(), 1);
insert into article values (null, 9, 1, '护士是蚂蚁', '护士是蚂蚁', now(), 0);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我的问题是:要把BBS中的帖子内容按照树状输出,但是总是只能输出一条记录,查了2个小时了,还是这样,编译器也没有报错,请大家给我看看,我快崩溃了,先谢谢大家了
String sql = "select * from article where pid" + id; 
你的第1个SQL不觉得有问题?运行能不抛异常??

Select * from article where pid = 0
第2个SQL限定了pid=0 ,你表中的数据pid=0的也只有1条,当然也只能查出1条了:
insert into article values (null, 0, 1, '蚂蚁大战大象', '蚂蚁大战大象', now(), 1); 

你再查查吧
问题找到了,可是String sql = "select * from article where pid" + id;也没有编译错误提示和异常抛出啊!
String sql = "select * from article where pid" + id;'
本来就是字符串啊
有什么疑问啊?
楼主可能用的是tomcat ^-^
引用 2 楼 ratzip 的回复:
问题找到了,可是String sql = "select * from article where pid" + id;也没有编译错误提示和异常抛出啊! 




String sql="这是一个假的SQL语句"



你看这个会不会有编译错误?
你把sql改成 String sql="select * from article where pid="+id;
String sql="select * from article where pid="+id;
刚才那个问题解决了,现在我修改了页面如下:
showtree.jsp
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<%@ page import="java.sql.*"%>
<%!String str = "";

private void tree(Connection conn, int id, int level) {
Statement stmt = null;
ResultSet rs = null;
String prestr = "";
for (int i = 0; i < level; i++) {
prestr += "----";
}
try {
stmt = conn.createStatement();
String sql = "select * from article where pid =" + id;
rs = stmt.executeQuery(sql);
while (rs.next()) {
str += "<tr><td>" + rs.getInt("id") + "</td><td>" + prestr
+ "<a href = 'showdetail.jsp?id=" + rs.getInt("id") + "'>" + rs.getString("title") + "</a>" + "</td></tr>";
if (rs.getInt("isleaf") != 0) {
tree(conn, rs.getInt("id"), level + 1);
}
}
} 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.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/bbs?user=root&password=root";
Connection conn = DriverManager.getConnection(url);

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>"
+ "<a href = 'showdetile.jsp?id=" + rs.getInt("id") + "'>" + rs.getString("title") + "</a>" + "</td></tr>";
if (rs.getInt("isleaf") != 0) {
tree(conn, rs.getInt("id"), 1);
}
}
rs.close();
stmt.close();
conn.close();
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<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>
~~~~~~~~~~~~~~~~~~~~~~~~~~~
我的问题是:现在我每在浏览器里刷新一次页面,它就会重新读取一次数据库,会接着上一次已经读取出来的10条记录后面重复显示,也就变成了20条记录,再刷新一次,又重复显示10条,我用得是TOMCAT和lomboz eclipse,请问这个问题怎么解决?谢谢大家了!
LZ很大意  String sql = "select * from article where pid=" + id; 少个=号 应该是这的问题吧

寻求混沌加密算法 给瞧瞧,是否黑客所为? 寻源代码:(分不够可以加分) 怎样执行‘确认’,‘取消’的操作,欢迎大家讨论!! Kylix3 一个奇怪的问题~! 控制复制的代码是什么? 那位大哥可以提供关于库存方面delphi的源程序。 如何在Plus中控制查询结果的输出显示 下载mysql 哪有Metrowerks CodeWarrior下载? oracle数据库转换到ms sqlserver发生的问题 在Window客户机下访问linux下的Oracle817服务器? 创建临时表问题 怎样规避异常? 关于虚拟主机 求《Delphi 5.X ADO+_MTS_COM+高级程序设计篇》完整下载地址 急切!请教一个关于access的报表打印问题! 问一个很幼稚的问题,application赋的值,在那里能够看到。 谁能提供一份jre(Java Runtime Environment)的中文文档!!! 怎么获得DataGrid中某一行的某一列的值,解决了马上给分! 郁闷啊……散分,一人20,半时后结贴。 为什么我编的串口通信控件(多线程)放到小程序中可以触发接收事件,而到大程序中却不行了呢,只是偶而的一两次可以? 用户无权收文登记??c/s OracleiAs9.0.2的一个安装问题 200分求icon to any的注册码或其它ICO格式转换为BMP的工具。谢谢! ODBC所使用的驱动与操作系统之间有关系嘛? 郁闷啊,散分,一人20,半时后结贴。 从装.net后运行.aspx提示没有权限查看该网页 jbuilder8的版本控制问题,高分!! 请问那里能下载到paradigm c++和破解程序?