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

C#中MySqlDataAdapter.Fill无反应问题求助

问题分析与解决方案

首先明确两个核心点:

  • MySqlDataAdapter.Fill默认不会清空现有DataTable的内容,而是将查询结果追加到已有行之后
  • 如果数据库的test表中没有数据,SELECT语句返回空结果,Fill自然不会添加任何新行

针对你的场景的解决步骤

1. 先确认数据库中是否有数据

你注释掉了插入数据的代码,所以当前数据库的test表大概率是空的。可以先执行注释里的插入逻辑,或者直接在数据库客户端执行INSERT INTO test(test) VALUES('testing'),再运行代码,此时Fill会把数据库里的行追加到你手动创建的DataTable中,最终DataTable会有两行数据。

2. 如果需要替换原有数据而非追加

如果你希望Fill后DataTable只保留数据库查询到的内容,需要在填充前手动清空原有行:

// 清空手动添加的行
testdt.Rows.Clear();
// 再执行填充
myadapter.Fill(testdt);

3. 优化连接管理(避免资源泄漏)

你的代码没有手动关闭数据库连接,建议使用using语句自动管理连接生命周期,确保连接被正确释放:

DataTable testdt = new DataTable();
testdt.Columns.Add("test");
DataRow testRow = testdt.NewRow();
testRow[0] = "testing";
testdt.Rows.Add(testRow);

using (MySqlConnection conn = new MySqlConnection(txtDBConnString.Text))
{
    conn.Open();
    MySqlDataAdapter myadapter = new MySqlDataAdapter("select * from test", conn);
    // 按需清空原有行
    // testdt.Rows.Clear();
    myadapter.Fill(testdt);
}
// 此时连接已自动关闭

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:45:38