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
相关产品推荐
相关产品推荐

