c# - 将子节点添加到节点列表

标签 c# mysql sql treeview

我知道我的标题非常模糊,我不知道如何总结。

我有一个到 MySQL 数据库的连接,该数据库从我想要在 TreeView 中查看的表中获取一列,并将每行中的数据添加为节点,我想将子节点添加到我添加的节点,但数据将根据每个节点而变化。

        string myConString = "Server=localHost;Database=fakekeeper;Uid=root;Pwd=**********;";
        string query = "SELECT OSP FROM OSP;";
        MySqlConnection conn = new MySqlConnection(myConString);
        MySqlDataReader reader;
        MySqlCommand cmd = new MySqlCommand(query, conn);
        conn.Open();
        reader = cmd.ExecuteReader();
        TreeNode tables = new TreeNode();

        treeView1.Nodes.Add(tables);

        while (reader.Read())
        {

            tables.Nodes.Add(reader["OSP"].ToString());
        }
        conn.Close();

它在我的数据库中的工作方式是每个产品都有一个 OSP,因为一个 OSP 可以有许多产品,但一个产品只能有一个 OSP,我想在我的 TreeView 中双击它显示的 OSP 时做到这一点我将 TreeView 中与该 OSP 关联的所有产品作为节点,我不确定是否可以将它们添加到 while 循环中,或者是否需要创建另一个?

最佳答案

我设法自己解决了这个问题,只需添加另一个我设法添加到节点的 while 循环:

        string myConString = "Server=localHost;Database=fakekeeper;Uid=root;Pwd=**********;";
        string query = "SELECT OSP FROM OSP;";
        MySqlConnection conn = new MySqlConnection(myConString);
        MySqlDataReader reader;
        MySqlCommand cmd = new MySqlCommand(query, conn);
        conn.Open();
        reader = cmd.ExecuteReader();
        TreeNode tables = new TreeNode();

        treeView1.Nodes.Add(tables);

        while (reader.Read())
        {
            TreeNode alphaNode = new TreeNode(reader["OSP"].ToString());
            tables.Nodes.Add(alphaNode);
            MySqlConnection subNodeConn = new MySqlConnection(myConString);
            string subNodeQuery = string.Format("SELECT product FROM {0};", reader["OSP"].ToString());
            MySqlCommand subNodeCommand = new MySqlCommand(subNodeQuery, subNodeConn);
            MySqlDataReader subNodeReader;
            subNodeConn.Open();
            subNodeReader = subNodeCommand.ExecuteReader();

            while(subNodeReader.Read())
            {
                alphaNode.Nodes.Add(subNodeReader["Product"].ToString());
            }
        }
        conn.Close();

请告诉我是否有更有效的方法?

关于c# - 将子节点添加到节点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35655610/

相关文章:

c# - 我的 SQLite 代码有什么问题?我得到的错误是 : SQLite error near"name":syntax error

c# - 为什么 RhinoMocks 有义务明确地重新定义 ToString() 以便能够对其设置期望?

c# - 使用 Http Patch 更新某些字段

php - Magento 多站点 - 批量启用和设置每个站点不同的可见性

python - 我怎样才能避免这种竞争情况?

c# - 在 linq 编译查询上使用 union

javascript - 如何将经过验证的 JavaScript 数据存入 MySQL 数据库

php - 如何在 session 登录成功后插入到表中

sql - select 语句中的动态表名

php - 我应该使用 PDO 来清理我的 Sql 查询还是 "mysql_real_escape_string"就足够了?