你说清楚点呀,树型结构优化,
你是指哪方面的,是指数据取树型数据,
还java中的JTree运算?
你是指哪方面的,是指数据取树型数据,
还java中的JTree运算?
解决方案 »
- 关于post提交和超链接提交“查询”请求的问题
- 求,现在开发基于B/S结构的MIS系统的技术选择
- 文本框输入问题!!!!!!!!!!!!!!!!!!!!!!
- 响应时间过长界面就打不开?小女子在线等,谢谢拉!
- 有人帮忙吗?简单问题。。。两个问题多个帖子给分!
- 论讨:学好jsp应具配那些知识?
- jsp连接MYSql问题一大堆!!
- Javabeen+oracle的问题
- struts 里的validation验证的一个小小问题,,,,,,,,,,,,,,,,,,
- mybatis-generator生成器添加类注释方法无效
- 500分求JSP树的源代码,JSP+XML,树的内容从数据库中动态生成!
- getParameter是不是将页面提交的数据保存到数据库的唯一方法?谢谢
一树形结构表,如下
当前ID号 父ID号 名称
ID ParentID Name解决方法:
CREATE FUNCTION fn_GetTree (@Id int)
RETURNS @retTree TABLE (id Int, name nvarchar(50))
AS
BEGIN
declare @Temp table (Id int,Name nvarchar(50))insert @Temp select id,name from tablename where ParentID=@idwhile exists(select id from tablename where ParentID in (select id from @Temp) and id not in (select id from @Temp) ) insert @Temp select id,name from tablename where ParentID in (select id from @Temp) and id not in (select id from @Temp)insert @retTree select * from @Tempreturn
end
import javax.swing.tree.*;
//import TreeStructure.CnStr;public class Tree {
public void getTree(Connection cn) {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("ROOT");
PreparedStatement preStmt;
ResultSet rs;
String strSQL = "select * from Tree where PID=0" ;
int father;
try {
preStmt = cn.prepareStatement(strSQL);
rs = preStmt.executeQuery();
while (rs.next()){
father = rs.getInt("ID");
DefaultMutableTreeNode fatherNode = new DefaultMutableTreeNode(father);
root.add(fatherNode);
getChildren(cn,fatherNode,father);
}
rs.close();
preStmt.close();
}
catch(Exception e) {
System.out.println(e);
}
}
public void getChildren(Connection cn,DefaultMutableTreeNode fatherNode,
int father) {
PreparedStatement preStmt;
ResultSet rs;
String strSQL = "select * from Tree where PID=?" ;
try {
preStmt = cn.prepareStatement(strSQL);
preStmt.setInt(1,father);
rs = preStmt.executeQuery();
while (rs.next()){
father = rs.getInt("ID");
DefaultMutableTreeNode Node = new DefaultMutableTreeNode(father);
fatherNode.add(Node);
getChildren(cn,Node,father);
}
rs.close();
preStmt.close();
}
catch(Exception e) {
System.out.println(e);
}
}
}--------------------Configuration: j2sdk1.4.0_01 <Default>--------------------
D:\Tree\Tree.java:20: cannot resolve symbol
symbol : constructor DefaultMutableTreeNode (int)
location: class javax.swing.tree.DefaultMutableTreeNode
DefaultMutableTreeNode fatherNode = new DefaultMutableTreeNode(father);
^
D:\Tree\Tree.java:43: cannot resolve symbol
symbol : constructor DefaultMutableTreeNode (int)
location: class javax.swing.tree.DefaultMutableTreeNode
DefaultMutableTreeNode Node = new DefaultMutableTreeNode(father);
^
2 errorsProcess completed.
效果跟你用的循环是一样的,
你想你在java中的用循环的速度肯定慢,我原来也是这样做的,
后来就改成我的那个自定义函数,速度快了4倍多。