| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1434 人关注过本帖
标题:急!哪位大虾帮忙看看错那里了!
只看楼主 加入收藏
cxyzcl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-1-19
收藏
 问题点数:0 回复次数:26 
急!哪位大虾帮忙看看错那里了!

package TreeDemo;

import java.beans.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.sun.corba.se.pept.transport.Connection;
import com.sun.tools.javac.util.List;

public class TreeTest {

/**
* @param args
*/
int j=0;
TreeNode tn1=new TreeNode();
static Connection con;
static Statement stmt;
static ResultSet rs;

public TreeNode buildRoot()
{

TreeNode Root=new TreeNode();
Root.setId(0);
Root.setCaption("Root");
TreeNode a=new TreeNode();
a.setId(1);
a.setCaption("A");
TreeNode a1=new TreeNode();
a1.setId(2);
a1.setCaption("A1");
TreeNode a2=new TreeNode();
a2.setId(3);
a2.setCaption("A2");
TreeNode a11=new TreeNode();
a11.setId(4);
a11.setCaption("A11");
TreeNode a12=new TreeNode();
a12.setId(5);
a12.setCaption("A12");
TreeNode b=new TreeNode();
b.setId(6);
b.setCaption("B");
TreeNode b1=new TreeNode();
b1.setId(7);
b1.setCaption("B1");
TreeNode b2=new TreeNode();
b2.setId(8);
b2.setCaption("B2");
TreeNode b11=new TreeNode();
b11.setId(9);
b11.setCaption("B11");
TreeNode b12=new TreeNode();
b12.setId(10);
b12.setCaption("B12");

a1.addTreeNode(a11);
a1.addTreeNode(a12);
a.addTreeNode(a1);
a.addTreeNode(a2);
Root.addTreeNode(a);

b1.addTreeNode(b11);
b1.addTreeNode(b12);
b.addTreeNode(b1);
b.addTreeNode(b2);
Root.addTreeNode(b);

return Root;

}
public static ArrayList getAll()
{
ArrayList result=new ArrayList();
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:Tree";
con=(Connection) DriverManager.getConnection(url,"sa","");
stmt = (Statement) ((java.sql.Connection) con).createStatement();
rs=((java.sql.Statement) stmt).executeQuery("select * from treetest");
while(rs.next())
{

TreeNode n=new TreeNode();
n.setId(rs.getInt("id"));
n.setCaption(rs.getString("caption"));
n.setParentid(rs.getInt("parentid"));
n.setSortedid(rs.getInt("sortedid"));
result.add(n);

}
return result;
}
catch(Exception e)
{
System.out.print("error");
}
return result;
}
//取当前接点直接子接点
public static ArrayList getSubing(TreeNode node) throws ClassNotFoundException
{
ArrayList result=new ArrayList();

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:Tree";
con=(Connection) DriverManager.getConnection(url,"sa","");
stmt = (Statement) ((java.sql.Connection) con).createStatement();
rs=((java.sql.Statement) stmt).executeQuery("select * from treetest where parentid="+node.getId()+ " order by id");
while(rs.next())
{
TreeNode n=new TreeNode();
n.setId(rs.getInt("id"));
String s2="|--"+rs.getString("caption");
String s=new String();
int level=rs.getInt("sortedid");
n.setSortedid(level);
//System.out.println(n.getLevel());
for(int i=1;i<level;i++)
{
s=s+" ";
}
n.setCaption(s+s2);
n.setSortedid(rs.getInt("sortedid"));
n.setParentid(rs.getInt("parentid"));
result.add(n);
}
} catch (SQLException e) { e.printStackTrace(); }
return result;
}
//getTree方法递归生成树
static ArrayList re1=new ArrayList();
public static ArrayList getTree(TreeNode node,List treeList) throws ClassNotFoundException
{
if(!node.isLeaf())
{
ArrayList ss=getSubing(node);
for(int i=0;i<ss.size();i++)
{
TreeNode n=(TreeNode)ss.get(i);
re1.add(n);
getTree(n,treeList);
}
}
else
{
re1.add(node);
}
return re1;
}
/* public TreeNode BuildRootFromTable()
{


}*/



public void displayTree(TreeNode tn)
{
System.out.println(tn.getCaption().toString());

for(int i=0;i<tn.getSubNodeList().size();i++)
{
tn1=(TreeNode)tn.getSubNodeList().get(i);
displayTree(tn1);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeTest treetest=new TreeTest();
treetest.displayTree(treetest.buildRoot());
System.out.println(TreeTest.getAll());
}

}
class TreeNode
{
private int id;
private String caption;
private ArrayList subNodeList=new ArrayList();
private int parentid;
private int sortedid;

public String getCaption() {
return caption;
}
public boolean isLeaf() {
// TODO Auto-generated method stub
return false;
}
public void setCaption(String caption) {
this.caption = caption;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getParentid() {
return parentid;
}
public void setParentid(int parentid) {
this.parentid = parentid;
}
public int getSortedid() {
return sortedid;
}
public void setSortedid(int sortedid) {
this.sortedid = sortedid;
}
public ArrayList getSubNodeList() {
return subNodeList;
}
public void setSubNodeList(ArrayList subNodeList) {
this.subNodeList = subNodeList;
}
public void addTreeNode(TreeNode tn)
{
this.subNodeList.add(tn);
}
public void deleteTreeNode(TreeNode tn)
{
this.subNodeList.remove(tn);
}
}
写了许多方法,但是不会调用了,buildRoot()是自己建立死的一个树,这个通过调用displayTree()可以显示的,但是 我要把数据库中的数据通过树的形式显示出来不会了。哪位大虾帮忙完善完善 万分感谢!
上传的是数据库备份文件 ,在线等 邮箱chenxiaoyun927@hotmail.com

iBFMFov4.rar (53.44 KB) 急!哪位大虾帮忙看看错那里了!


搜索更多相关主题的帖子: package public import 
2007-03-08 09:57
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
有没有什么异常,还有,如果你是通过JDBC:ODBC桥接的话,你获取数据库表的列的顺序就不能乱,你只能从前面的列读到后面的列去,如果你顺序错了是读不出来的
比如我有一个表如下:
id name sex phone
1 hades 男 13811111111

你这样调用是对的rs.getInt("id")然后rs.getString("name"),然后rs.getString("sex");

如果你这样调用rs.getString("name")然后rs.getInt("id")那就错了

如果你是JDBC驱动的就可以,ODBC桥接的就不能乱顺序

可惜不是你,陪我到最后
2007-03-08 10:28
cxyzcl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-1-19
收藏
得分:0 
顺序是对的呀 我现在主要是不会在main函数里调用方法,传参不会,能帮忙看一下么 ,顺便倒个谢!
2007-03-08 10:42
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
不会在main函数里面调用方法?
什么意思,生成一个对象后,就可以调用了

可惜不是你,陪我到最后
2007-03-08 10:51
cxyzcl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-1-19
收藏
得分:0 
我知道要生成对象 但是调用函数时要传参
public static ArrayList getTree(TreeNode node,List treeList) throws ClassNotFoundException
要传两个参数调用时怎么传啊!
谢谢!
2007-03-08 10:54
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
传入一个是TreeNode对象,另一个是实现了List接口的任一对象啊


可惜不是你,陪我到最后
2007-03-08 10:55
cxyzcl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-1-19
收藏
得分:0 
回复:(cxyzcl)急!哪位大虾帮忙看看错那里了!
还有我觉得
if(!node.isLeaf())

这个判断有问题但不知道错在哪里
在TreeNode里定义的方法好像不对
2007-03-08 10:57
cxyzcl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-1-19
收藏
得分:0 
回复:(千里冰封)传入一个是TreeNode对象,另一个是实...
能不能针对我这个例子写一个给我看看啊
谢谢
2007-03-08 10:58
cxyzcl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-1-19
收藏
得分:0 
回复:(cxyzcl)回复:(千里冰封)传入一个是TreeNo...
帮忙写一个全的main函数 我可以把数据库里的信息调用出来 谢谢
我卡在这里难过死了
2007-03-08 10:59
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你学JAVA多久?

可惜不是你,陪我到最后
2007-03-08 11:05
快速回复:急!哪位大虾帮忙看看错那里了!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037600 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved