十分郁闷。我苦恼了两天了,我把增加 删除 改名 都完成了,就最后一个环节如何将
Jtree 整颗树 保存到 数据库里  数据库的表又是如何建的 ?
又怎样把 数据库表里的读出来 , 重新生成一个树` 这个问题苦恼了我很多天,希望
高手门来帮我解决一下,跪求了....

解决方案 »

  1.   

    需要二进制的字段保存这个JTree对象的字节码,使用ObjectOutputStream的实例写对象到数据库:Blob blob = rs.getBlob(columnIndex);
    OutputStream output = blob.setBinaryStream(0L);
    ObjectOutputStream objOutput = new ObjectOutputStream(output);objOutput.writeObject(jtreeObject);
    objOutput.close();
    output.close();
    从数据库读取JTree对象:Blob blob = rs.getBlob(columnIndex);
    InputStream input = blob.getBinaryStream();
    ObjectInputStream objInput = new ObjectInputStream(input);
    JTree jtreeObject = (JTree) objInput.readObject();注: 以上代码未编译、运行、验证
      

  2.   

    Blob blob = rs.getBlob(columnIndex);
    InputStream input = blob.getBinaryStream();
    ObjectInputStream objInput = new ObjectInputStream(input);
    JTree jtreeObject = (JTree) objInput.readObject();
      

  3.   

    up 继续关注``
    二楼四楼都提到 
    Blob blob = rs.getBlob(columnIndex); 
    InputStream input = blob.getBinaryStream(); 
    ObjectInputStream objInput = new ObjectInputStream(input); 
    JTree jtreeObject = (JTree) objInput.readObject(); 
    二进制流? 这我不清楚, 不会。
      

  4.   

    Jtree 树保存到数据库 我的思路,请大家帮忙看下,并且提供解决方案.
    数据库形成表  tree
    3个列 id 标识列 name 节点名称 prentid 父类id
    id      name          prentid
    1       全部资产       0
    2       办公类         1
    3       电脑           2
    4       鼠标           3
    5       中国           1
    6       浙江           5
    7       杭州           6这是我的想法`Jtree保存到数据库应该是这样的形式
    这颗树的形状应该如下显示:
    全部资产
           办公类
                  电脑
                         鼠标
           中国
                  浙江
                         杭州我现在知道获取整颗树的方法。
     for (int i=0 ; i<tree.getRowCount();i++)
            {   //获取每一行展开来树的最后节点
                DefaultMutableTreeNode node=(DefaultMutableTreeNode) tree.getPathForRow(i).getLastPathComponent();
                //获取每个节点离根节点的距离
                int nodeNum=node.getLevel();
            }
    问大家有办法可以让我达到我思想中那种效果吗?
      

  5.   

    up  ``不信没人懂的`
    SQL sql=new SQL();
            sql.update("use Scar_capinfo if exists (select * from sysobjects where name = 'catetree')"+
                       " Drop table catetree"+
                       " create table catetree(prentid int,name varchar(50),id int identity(1,1))");
            for (int i=0 ; i<tree.getRowCount();i++)
            {
                int k=1;
                DefaultMutableTreeNode node=(DefaultMutableTreeNode) tree.getPathForRow(i).getLastPathComponent();
                int nodeNum=node.getLevel();
                sql.update("insert into catetree(prentid,name) values("+nodeNum+",'"+node+"')");
            }
    保存时的代码 SQL sql=new SQL();
            Vector vtprid=new Vector();
            Vector id=new Vector();
            Vector name=new Vector();
            ResultSet rs=sql.query("select * from catetree where prentid!=0 order by id,prentid");
            while (rs.next())
            {
                vtprid.addElement(""+rs.getString(1));
                name.addElement(""+rs.getString(2));
                id.addElement(""+rs.getString(3));
            }
            DefaultMutableTreeNode node=null;
            Vector vv=new Vector();
            for (int i=0 ; i< vtprid.size() ; i++)
            {            boolean bl=false;
                for (int l = 0; l < vv.size(); l++) {                if(vv.get(l).toString().equals(""+i)){
                        bl=true;
                        break;
                    }
                }
                if(bl){
                    continue;
                }
                node=new DefaultMutableTreeNode(name.get(i));
                vv.add(new Integer(i));
                root.add(node);            for (int j = i; j < id.size(); j++)
                {
                    if (vtprid.get(j).equals(id.get(i)))
                    {
                        node.add(new DefaultMutableTreeNode(name.get(j)));
                        vv.add(new Integer(j));
                    }
                }
            }读时的代码
      

  6.   

    这要看你的数据库里面是怎么存数据的,如果你要显示一棵树,那么你的数据库中的数据应该会有一个层次结构吧,那么,如果你用的是Oracle数据库,你可以用Oracle的level关键字来进行层次查找,最终形成一棵树.
      

  7.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【jinzhoucai】截止到2008-07-04 11:44:44的历史汇总数据(不包括此帖):
    发帖的总数量:3                        发帖的总分数:120                      
    结贴的总数量:1                        结贴的总分数:0                        
    无满意结贴数:1                        无满意结贴分:20                       
    未结的帖子数:2                        未结的总分数:120                      
    结贴的百分比:33.33 %               结分的百分比:0.00  %                  
    无满意结贴率:100.00%               无满意结分率:---------------------
    楼主该结一些帖子了