使用 C# 代码连接数据库,查询数据并填充 TreeView,并封装成可复用的方法

1. 连接数据库并查询数据

// 连接数据库
using (SqlConnection conn = new SqlConnection(connString))
{
    conn.Open();

    // 查询数据
    string query = "SELECT prd_cat, prd_name, sop_name, ver, sop_page FROM sop";
    SqlCommand command = new SqlCommand(query, conn);
    SqlDataReader reader = command.ExecuteReader();

    // 清空TreeView
    treeView1.Nodes.Clear();

    // 遍历数据并填充TreeView
    while (reader.Read())
    {
        string prdCat = reader["prd_cat"].ToString();
        string prdName = reader["prd_name"].ToString();
        string sopName = reader["sop_name"].ToString();
        string ver = reader["ver"].ToString();
        string sopPage = reader["sop_page"].ToString();

        // 检查是否已存在主节点
        TreeNode mainNode = treeView1.Nodes.Find(prdCat, false).FirstOrDefault();
        if (mainNode == null)
        {
            mainNode = treeView1.Nodes.Add(prdCat, prdCat);
        }

        // 检查是否已存在二级节点
        TreeNode subNode = mainNode.Nodes.Find(prdName, false).FirstOrDefault();
        if (subNode == null)
        {
            subNode = mainNode.Nodes.Add(prdName, prdName);
        }

        // 添加三级节点
        TreeNode thirdNode = subNode.Nodes.Add(sopName, sopName);
    }

    // 关闭连接
    reader.Close();
}

2. 封装成方法

private void RefreshTreeView()
{
    // 连接数据库
    using (SqlConnection conn = new SqlConnection(connString))
    {
        conn.Open();

        // 查询数据
        string query = "SELECT prd_cat, prd_name, sop_name, ver, sop_page FROM sop";
        SqlCommand command = new SqlCommand(query, conn);
        SqlDataReader reader = command.ExecuteReader();

        // 清空TreeView
        treeView1.Nodes.Clear();

        // 遍历数据并填充TreeView
        while (reader.Read())
        {
            string prdCat = reader["prd_cat"].ToString();
            string prdName = reader["prd_name"].ToString();
            string sopName = reader["sop_name"].ToString();
            string ver = reader["ver"].ToString();
            string sopPage = reader["sop_page"].ToString();

            // 检查是否已存在主节点
            TreeNode mainNode = treeView1.Nodes.Find(prdCat, false).FirstOrDefault();
            if (mainNode == null)
            {
                mainNode = treeView1.Nodes.Add(prdCat, prdCat);
            }

            // 检查是否已存在二级节点
            TreeNode subNode = mainNode.Nodes.Find(prdName, false).FirstOrDefault();
            if (subNode == null)
            {
                subNode = mainNode.Nodes.Add(prdName, prdName);
            }

            // 添加三级节点
            TreeNode thirdNode = subNode.Nodes.Add(sopName, sopName);
        }

        // 关闭连接
        reader.Close();
    }
}

3. 在其他按钮的事件处理程序中调用方法

// 在其他按钮的事件处理程序中调用RefreshTreeView方法
private void button1_Click(object sender, EventArgs e)
{
    RefreshTreeView();
}

说明:

  • connString 为连接字符串,请根据实际情况进行修改。
  • treeView1 为您要填充的 TreeView 控件的名称,请根据实际情况进行修改。
  • 可以根据实际需求修改查询语句 SELECT prd_cat, prd_name, sop_name, ver, sop_page FROM sop,以及填充 TreeView 的逻辑。

优势:

  • 将刷新 TreeView 的代码封装成一个独立的方法,提高代码复用性,方便维护。
  • 在其他按钮的事件处理程序中只需要调用 RefreshTreeView() 方法,即可刷新 TreeView,简化代码逻辑。
  • 提高代码可读性和可维护性。

原文地址: https://www.cveoy.top/t/topic/qhbM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录