You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 读取SQL数据创建动态Label展示Ping监控结果问题

代码修改方案

一、原有问题说明

  • 第一版代码中reader["host" + "ip" + " "]写法错误:方括号内是要读取的字段名,拼接后变成不存在的hostip 字段,自然读不到数据
  • 第二版代码错误点:
    1. 重复将Label同时添加到主窗口和flowLayoutPanel,会引发控件所属容器冲突
    2. 把批量Ping的调用写在循环内部,丧失了批量执行的能力,且参数赋值逻辑错误
    3. ipAddress.Add("ip")是写死的字符串,没有读取数据库里的实际IP值

二、完整修改代码

private async void frmMainWindow_Load(object sender, EventArgs e)
{
    // 数据库操作部分优化,用using自动释放资源
    string conString = @"Data Source=PC\SQL;Initial Catalog=PingMonitorDB;Integrated Security=True";
    DataTable dtTable = new DataTable();
    using (SqlConnection cnn = new SqlConnection(conString))
    using (SqlCommand cmd = new SqlCommand("SELECT host, ip FROM addhosts", cnn))
    using (SqlDataAdapter dp = new SqlDataAdapter(cmd))
    {
        cnn.Open();
        dp.Fill(dtTable);
    }

    // 准备批量Ping需要的地址列表和对应控件列表
    List<string> addressList = new List<string>();
    List<Control> labelControlList = new List<Control>();

    for (int i = 0; i < dtTable.Rows.Count; i++)
    {
        string host = dtTable.Rows[i]["host"].ToString();
        string ip = dtTable.Rows[i]["ip"].ToString();
        
        Label lbl = new Label();
        lbl.AutoSize = true;
        lbl.Font = new Font("Arial", 12, FontStyle.Bold);
        // 初始展示主机名和IP,Ping完成后会自动追加结果
        lbl.Text = $"{host}    {ip}    检测中...";
        lbl.BackColor = System.Drawing.Color.Orange;
        // 只添加到flowLayoutPanel即可,自动排列不会重叠
        flowLayoutPanel1.Controls.Add(lbl);

        // 把对应IP和控件加入批量调用的列表
        addressList.Add(ip);
        labelControlList.Add(lbl);
    }

    // 遍历完所有记录后统一调用批量Ping
    if (addressList.Any())
    {
        var massPing = new MassPing();
        // 对应索引的IP和Label会自动匹配,只需要修改MassPing的更新逻辑,将Ping结果拼到Label.Text末尾即可得到要求的展示格式
        await massPing.PingAll(addressList.ToArray(), labelControlList.ToArray(), 2000);
    }
}

内容的提问来源于stack exchange,提问作者user14568805

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:48:03