C#点击Insert按钮后自动刷新DataGridView显示数据的实现求助
解决插入数据后自动刷新DataGridView的问题
这问题很常见,核心思路是把「加载数据到DataGridView」的逻辑抽成独立方法,这样插入操作完成后直接调用它就行,不用重复写代码。我给你一步步拆解:
1. 封装查看数据的逻辑为独立方法
把你View按钮里用来查询并显示数据的代码,提取到一个单独的方法中。这样不管是点击View按钮,还是插入后自动刷新,都能复用这段代码,还方便后续维护。
示例代码(根据你的OleDb场景调整):
private void LoadDataToGridView() { // 使用using语句自动管理数据库连接,避免连接泄露 using (OleDbConnection con = new OleDbConnection("你的数据库连接字符串")) { try { con.Open(); // 替换成你的查询语句,比如查询目标表的所有数据 string query = "SELECT * FROM 你的表名称"; OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, con); DataTable dataTable = new DataTable(); // 填充数据到DataTable并绑定到DataGridView dataAdapter.Fill(dataTable); dataGridView1.DataSource = dataTable; } catch (Exception ex) { MessageBox.Show("加载数据出错:" + ex.Message); } } // using块结束后,连接会自动关闭 }
2. 简化View按钮的代码
现在View按钮只需要调用上面的方法就行:
private void ViewButton_Click(object sender, EventArgs e) { LoadDataToGridView(); }
3. 修改Insert按钮的代码,插入后自动刷新
在Insert按钮的插入操作成功完成后,直接调用LoadDataToGridView()方法,就能自动刷新DataGridView了。同时建议用参数化查询避免SQL注入,并且做好异常处理:
private void InsertButton_Click(object sender, EventArgs e) { try { using (OleDbConnection con = new OleDbConnection("你的数据库连接字符串")) { con.Open(); OleDbCommand cmd = con.CreateCommand(); // 替换成你的插入语句,用参数化查询更安全 cmd.CommandText = "INSERT INTO 你的表名称 (列1, 列2) VALUES (@参数1, @参数2)"; // 根据你的实际字段添加参数,示例如下: cmd.Parameters.AddWithValue("@参数1", textBox1.Text); cmd.Parameters.AddWithValue("@参数2", textBox2.Text); // 执行插入操作 int affectedRows = cmd.ExecuteNonQuery(); if (affectedRows > 0) { MessageBox.Show("数据插入成功!"); // 插入成功后立即刷新DataGridView LoadDataToGridView(); } else { MessageBox.Show("插入失败,请检查输入!"); } } } catch (Exception ex) { MessageBox.Show("插入操作出错:" + ex.Message); } }
关键好处
- 代码复用:避免重复编写加载数据的逻辑,减少冗余
- 易维护:以后要修改数据显示的规则(比如调整查询条件、修改列显示),只需要改
LoadDataToGridView()一个方法 - 资源安全:using语句确保数据库连接被正确释放,不会出现连接泄露问题
内容的提问来源于stack exchange,提问作者J.A
相关产品推荐
相关产品推荐

