如何在C#窗体中通过按钮删除DataGridView及MariaDB中的选中行
实现DataGridView选中行删除并同步MariaDB数据库
核心思路
通过删除按钮的点击事件,先获取DataGridView中用户选中的行,提取该行对应的数据库主键(必须依赖唯一标识字段,比如id),执行MariaDB的删除语句同步数据库数据,最后移除DataGridView中的选中行。
具体实现代码(以C#为例)
假设你的DataGridView绑定的表主键为id,且DataGridView中包含该列(可设为隐藏列):
private void btnDelete_Click(object sender, EventArgs e) { // 判断是否选中行 if (dataGridView1.SelectedRows.Count == 0) { MessageBox.Show("请先选中要删除的行"); return; } // 确认删除 if (MessageBox.Show("确定要删除选中的行吗?", "确认删除", MessageBoxButtons.YesNo) != DialogResult.Yes) { return; } // 获取选中行的主键值 int rowId = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["id"].Value); string connString = "你的MariaDB连接字符串"; // 替换为你已有的连接字符串 try { using (MySqlConnection conn = new MySqlConnection(connString)) { conn.Open(); // 编写参数化删除语句,防止SQL注入 string sql = "DELETE FROM 你的表名 WHERE id = @id"; using (MySqlCommand cmd = new MySqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@id", rowId); int affectedRows = cmd.ExecuteNonQuery(); if (affectedRows > 0) { // 删除DataGridView中的选中行 dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); MessageBox.Show("删除成功"); } else { MessageBox.Show("未找到对应数据,删除失败"); } } } } catch (Exception ex) { MessageBox.Show("删除时出错:" + ex.Message); } }
关键注意事项
- 必须依赖主键:数据库删除必须通过唯一标识(如
id)定位数据,避免误删多条记录。如果你的主键不是id,替换代码中对应的字段名即可。 - 参数化查询:一定要用参数化语句,禁止直接拼接SQL字符串,防止SQL注入攻击。
- 操作顺序:优先执行数据库删除操作,再移除DataGridView的行,避免DataGridView行已删除但数据库操作失败导致数据不一致。
- 异常处理:添加异常捕获,处理数据库连接失败、数据不存在等异常情况,提升用户体验。
内容的提问来源于stack exchange,提问作者unbeliever
相关产品推荐
相关产品推荐

