Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当父节点展开时,在树中列出子节点_Java_Mysql_Tree_Treeview - Fatal编程技术网

Java 当父节点展开时,在树中列出子节点

Java 当父节点展开时,在树中列出子节点,java,mysql,tree,treeview,Java,Mysql,Tree,Treeview,我在实现OID的树结构时遇到了一个问题。单击父级时,我只需要显示子级详细信息,而不需要显示子级的子级详细信息。 i、 例如,我不需要显示包含“.”(点)的OID 例如,如果我的OID结构是private.MIB.sample.first private.MIB.sample.second等 当我点击MIB时,它应该只显示“sample”,而不是第一个和第二个 单击“采样”时将显示第一个和第二个。 如何在java中实现这一点。 我的数据库是MySQL。下面给出了我尝试的代码 Fil

我在实现OID的树结构时遇到了一个问题。单击父级时,我只需要显示子级详细信息,而不需要显示子级的子级详细信息。 i、 例如,我不需要显示包含“.”(点)的OID

例如,如果我的OID结构是private.MIB.sample.first private.MIB.sample.second等

当我点击MIB时,它应该只显示“sample”,而不是第一个和第二个

单击“采样”时将显示第一个和第二个。 如何在java中实现这一点。 我的数据库是MySQL。下面给出了我尝试的代码

        FilteredRowSet rs = new FilteredRowSetImpl();

        // for Other Types Like OBJECT-TYPE, Object_IDENTIFIER
        rs = new FilteredRowSetImpl();
        rs.setCommand("Select * from MIBNODEDETAILS where " + "mn_OID like '" + OID
                + ".%' order by mn_NodeType, mn_OID");
        rs.setUrl(Constants.DB_CONNECTION_URL);
        rs.setFilter(new MibRowFilter(1, expString));
        rs.execute();

        rs.absolute(1);
        rs.beforeFirst();
我想应该在setCommand参数中进行更改

我该怎么做

mobnodedetails表的结构

+--------------------+-------------------+-------------+
| mn_OID             | mn_name           | mn_nodetype |
+--------------------+-------------------+-------------+
| 1                  | iso               |           0 |
| 1.3                | org               |           1 |
| 1.3.6              | dod               |           1 |
| 1.3.6.1            | internet          |           1 |
| 1.3.6.1.1          | directory         |           1 |
| 1.3.6.1.2          | mgmt              |           1 |
| 1.3.6.1.2.1        | mib-2             |           0 |
| 1.3.6.1.2.1.1      | system            |           1 |
| 1.3.6.1.2.1.10     | transmission      |           1 |

你可以用像

  SELECT *
    FROM mibnodedetails
   WHERE mn_oid LIKE "+mn_OID+"%
    AND LENGTH ("+mn_OID+") + 2 = LENGTH (mn_oid)
ORDER BY mn_nodetype, mn_oid
因此,如果您将mm|OID作为
1.3.6.1(| 1.3.6.1 |互联网| 1 |)

您将得到以下结果:

| 1.3.6.1.1          | directory         |           1 |
| 1.3.6.1.2          | mgmt              |           1 |


PS:这对大于9的孩子不起作用,因为我们使用的是长度+2

下面给出的函数根据需要显示树

public void populateMibValues()
{

    final DefaultTreeModel model = (DefaultTreeModel) this.m_mibTree.getModel();
    model.setRoot(null);

    this.rootNode.removeAllChildren();
    final String query_MibNodeDetailsSelect = "Select * from MIBNODEDETAILS where LENGTH(mn_oid)<=9 "
            + " and mn_OID<='1.3.6.1.4.1' order by mn_OID"; // only

    this.innerNodeNames.clear();
    this.innerNodes.clear();
    this.innerNodesOid = null;

    try {
        final ResultSet deviceRS = Application.getDBHandler().executeQuery(query_MibNodeDetailsSelect, null);// inner
        // nodes

        while (deviceRS.next()) {
            final mibNode mb = new mibNode(deviceRS.getString("mn_OID").toString(), deviceRS.getString("mn_name")
                    .toString());
            mb.m_Type = Integer.parseInt(deviceRS.getString("mn_nodetype").toString());
            createMibTree(mb);
        }
    }
    catch (final Exception e) {
        Application.showErrorInConsole(e);
        NmsLogger.writeErrorLog("ERROR creating MIB tree failed", e.toString());
    }
public void populateMibValues()
{
final DefaultTreeModel model=(DefaultTreeModel)this.m_mibTree.getModel();
model.setRoot(null);
this.rootNode.removeAllChildren();

最终字符串查询\u MIBNODEDETAILS Select=“Select*from MIBNODEDETAILS where LENGTH(mn\u oid)您可以有两种方法:1)每次选择一个节点时连接到数据库以获取所选节点的子节点;2)在一个查询中获取所有数据,然后以编程方式构建树。您能解释一下您的表结构吗?表包含mn_OID(整数)、mn_Nodetype(整数)、mn_nodeName(字符串)@Gapchoos我知道你的要求,但是这个父子关系是如何存储在数据库中的我的问题是这样的。@Gapchoos检查我的答案,让我知道它是否与你想要的相同或不同。很抱歉,这没有给出结果。我不想得到父项。而是只显示直接子项,而不是子项。在这种情况下,当我单击dod“只显示“目录”,而不显示管理和其他节点。@Gapchoos单击“dod”它应该只显示“internet”。@Gapchoos请根据您在问题中的数据为我提供输入和输出,以便我可以帮助您。