日期:2014-05-20  浏览次数:20914 次

JTree 动态加载ACCESS数据库中的内容生成树的问题?谢谢!
最近一个小项目中,数据库中的记录大概有3000多条,要生成一颗树,我是应该初始时全部加载呢,还是有其他的方法。

我写了一个递归加载所有内容的例子,但是效率太低了 ,50秒才能生成。
下面是核心代码

  本人是刚学习的菜鸟,望多多指教!
Java code

 public void showTreeNode(DefaultMutableTreeNode node, int pid){
        Connection conn = DB.getConn();
        Statement stmt = DB.createStmt(conn);
        ResultSet rs = DB.executeQuery(stmt, "select nameid, id from u_module where pid="+pid);
     
        try {
            while(rs.next()){
               DefaultMutableTreeNode m = new DefaultMutableTreeNode(rs.getString("nameid"));
               int sid = rs.getInt("id");
               if(hasNode(sid)){
                   showTreeNode(m,sid);
               }
                node.add(m); 
             
            }
        } catch (SQLException ex) {
            DB.close(conn);
                DB.close(stmt);
                DB.close(rs);
            ex.printStackTrace();
        }
                DB.close(conn);
                DB.close(stmt);
   
        
    }
   public boolean hasNode(int id){
       Connection conn = DB.getConn();
       Statement stmt = DB.createStmt(conn); 
       ResultSet rs = DB.executeQuery(stmt, "select id from u_module where pid="+id);
        try {
            if(rs.next()){
                DB.close(conn);
                DB.close(stmt);
            
                return true;
            }
        } catch (SQLException ex) {
           ex.printStackTrace();
        }
        DB.close(conn);
                DB.close(stmt);
       return false;
   }
    
    public void init()  
    {   
       if(hasNode(0)){
           showTreeNode(root,0);
       }
         
        
        
        
          
        jf = new JFrame("树");
        tree = new JTree(root);  
        //获取JTree对应的TreeModel对象  
        model = (DefaultTreeModel)tree.getModel();  
        //设置JTree可编辑  
        tree.setEditable(true);
        tree.setRootVisible(false) ;



------解决方案--------------------
访问了好多次数据库啊,时间都花在读数据库上了. 拆分一下吧,读一次数据库,然后用代码判断,添加节点.