当前位置: 代码迷 >> J2SE >> JTree 动态加载ACCESS数据库中的内容生成树的有关问题?多谢
  详细解决方案

JTree 动态加载ACCESS数据库中的内容生成树的有关问题?多谢

热度:805   发布时间:2013-02-25 00:00:00.0
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) ;


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