我的表结构:
id,classname,parentid数据
:
1,北京,0
2,天津,0
3,上海,0
4,朝阳区,1
5,南开区,2
6,朝阳区-1,4
7,南开区-1,5
我用递归的方法来输出数据库的内容,可是
当执行了下面的程序后,输出结果为北京
朝阳区
朝阳区-1其他的都输不出来,也就是同一级别的循环只得到第一个分类package com;
import java.sql.*;
import java.util.Vector;public class DB {
Connection connection;
Statement stmt2;
ResultSet rs2; Vector v=new Vector();
String driverName="com.mysql.jdbc.Driver";
//数据库用户名
String userName="root";
//密码
String userPasswd="123456";
//数据库名
String dbName="hui_wxj";
String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;public void setConnection() throws Exception //建立数据库连接
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection=DriverManager.getConnection(url);
stmt2=connection.createStatement();
}
public void digui(int parentid) throws Exception //递归输出数据库的内容{
setConnection();
String sql2="select * from hui_sort where parentid="+parentid;
rs2=stmt2.executeQuery(sql2);while(rs2.next())
{
System.out.println(rs2.getString(2));
System.out.println(rs2);
digui(rs2.getInt(1));
}
}
public static void main(String[] args) throws Exception {
DB db=new DB();
db.digui(0); //0是根目录
}}请各位高手指点一二!
id,classname,parentid数据
:
1,北京,0
2,天津,0
3,上海,0
4,朝阳区,1
5,南开区,2
6,朝阳区-1,4
7,南开区-1,5
我用递归的方法来输出数据库的内容,可是
当执行了下面的程序后,输出结果为北京
朝阳区
朝阳区-1其他的都输不出来,也就是同一级别的循环只得到第一个分类package com;
import java.sql.*;
import java.util.Vector;public class DB {
Connection connection;
Statement stmt2;
ResultSet rs2; Vector v=new Vector();
String driverName="com.mysql.jdbc.Driver";
//数据库用户名
String userName="root";
//密码
String userPasswd="123456";
//数据库名
String dbName="hui_wxj";
String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;public void setConnection() throws Exception //建立数据库连接
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection=DriverManager.getConnection(url);
stmt2=connection.createStatement();
}
public void digui(int parentid) throws Exception //递归输出数据库的内容{
setConnection();
String sql2="select * from hui_sort where parentid="+parentid;
rs2=stmt2.executeQuery(sql2);while(rs2.next())
{
System.out.println(rs2.getString(2));
System.out.println(rs2);
digui(rs2.getInt(1));
}
}
public static void main(String[] args) throws Exception {
DB db=new DB();
db.digui(0); //0是根目录
}}请各位高手指点一二!
解决方案 »
- 关于sql2000 Error establishing socket 问题
- 我有一个字符串"200602",相当于2006年02月,当有一个字符串为3时,相应产生200602,200601,200512,这3个字符,
- 初学者,jsp小程序,跪求各位大虾了.谢谢了..
- jsp传递中文数据到sqlserver2000有乱码?怎么解决?
- javax.servlet.ServletException: No provider for Address type: rfc822
- jsp如何处理特定格式文件,把数据导入数据库,请赐教?
- 如何在jsp页面写下载链接?
- java里如何按tab方式在console上显示一个数据库table(ResultSet)的内容
- 如何实现多页面的显示问题? 在线等待!!!
- The method getTextContent() is undefined for the type Node ?
- 有在 Ubuntu 下 用 jsp 连接 MySQL 的吗?
- ajax+struts中文乱码的问题
setConnection();
String sql2="select * from hui_sort";
rs2=stmt2.executeQuery(sql2);while(rs2.next())
{
System.out.println(rs2.getString(2));
这样不就行了
北京后是null还是''?
ResultSet rs2; 声明放在digui方法里 再试试!
那我的就没法实现了么?
ResultSet rs=stmt.executeQuery("select * from hui_sort");
link=new MyLink(null,null);
while(rs.next()){
link.index=rs.getString(1);
link.value=rs.getString(2);
link.key=rs.getString(3);
link=new MyLink(link,null);
}
reverse();
digui(0);
}
private static void reverse(){
while(link.hasPreious())
link=link.preious;
}
static MyLink link;
public static void digui(int parentid){
while(link.hasNext()){
System.out.println(link.value);
digui(Integer.parseInt(link.index));
}
}
}
public class MyLink{
MyLink preious;
MyLink next;
String index;
String key;
String value;
public MyLink(MyLink preious,MyLink next){
this.next=next;
this.preious=preious;
}
public boolean hasNext(){
if(next!=null){
return true;
}else{
return false;
}
}
public boolean hasPreious(){
if(preious!=null){
return true;
}else{
return false;
}
}
}