收录日期:2019/07/17 12:54:07 时间: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; 少个=号 应该是这的问题吧

同一JSP调用多个action方法 出售 一套 ARM9 OK2440开发板 ,全新,带3.5寸触摸屏,带一张DVD光盘,数据线等 jsp局部处理,上传图片 求助:下拉菜单连接数据库动态实现的问题 来说说你看过的“黄”书吧~~~~~~~ 如何从人人网抓取学校数据? 如图所示,如何讲点画成箭头? PB有哪些购买渠道? excel 表 另存为 TXT C++嵌入式平台下开发的疑问 &&求2010年11月11日晚餐券一张&& 这个问题 我哭了 sql查询过滤重复语句 TreeView控件的使用问题 wince上C#的dll,C++如何调用? 卖身 求助0 .0 java类加载的疑问 水晶报表---多表,dataset,好慢,打不开。解决方案 detailsview中FCKeditor取值的问题 如何提高这个程序的执行速度? 到底该怎么选择? 初学者对于DS寄存器与程序段前缀(PSP)的两个疑惑...?从王爽老师《汇编语言》想到的.... sqlserver中sql语句联合查询,用一条语句写出,先update,后取出被update的值 如何弹出一个div使其浮动于其他div之上? PHP 类 构造方法 VB的类型转换C#,知道的来,在线等..... 讨论:C#程序在XP和win7、Vista系统下的运行速度问题 ssh怎么实现excel文件导入进度条——急求 容器deque如何插入元素 6410 WINCE6.0 DDR初始化