【发布时间】:2019-12-13 21:59:17
【问题描述】:
我正在尝试创建将同时从我的数据库中删除数据的循环。
这是我的代码。
using (MySqlConnection mysqlCon = new MySqlConnection(connectionString))
{
foreach (DataGridViewRow dr in bunifuCustomDataGrid1.Rows)
{
int inventid = Convert.ToInt32(bunifuCustomDataGrid1.Rows[bunifuCustomDataGrid1.CurrentRow.Index].Cells[0].Value);
mysqlCon.Open();
MySqlCommand cmd = new MySqlCommand("DELETE FROM bookdb.book WHERE (BookID = @uid)", mysqlCon);
cmd.Parameters.AddWithValue("uid", inventid);
cmd.ExecuteNonQuery();
mysqlCon.Close();
GridFill();
}
}
MessageBox.Show("DOne");
我可以删除多条记录,但如果秩序混乱,它就会消失。 我希望有人可以帮助我。
/////////////////////////////////////// /////////
我在下面尝试了一些答案。这是几乎对我有用的代码。
using (MySqlConnection mysqlCon = new MySqlConnection(connectionString))
{
mysqlCon.Open();
var tr = mysqlCon.BeginTransaction();
foreach (DataGridViewRow dr in bunifuCustomDataGrid1.Rows)
{
var cmd = new MySqlCommand("DELETE FROM bookdb.book WHERE (BookID = @uid)");
cmd.Connection = mysqlCon;
cmd.Transaction = tr;
cmd.Parameters.AddWithValue("@uid", dr.Cells["BookID"].Value ?? DBNull.Value);
cmd.ExecuteNonQuery();
}
tr.Commit();
mysqlCon.Close();
//////////////////////////
}
MessageBox.Show("DOne");
GridFill();
////
///
问题是它删除了所有行。
【问题讨论】:
-
更典型的方法是使用数据绑定。如果您的数据受MySqlDataAdapter 的控制,您只需将其称为
Update()方法。如果您正在操作 UI 元素,则它是一个危险信号。 -
为什么每次迭代
bunifuCustomDataGrid1.Rows时都要打开和关闭连接? -
为什么忽略循环中的“dr”变量?如果你的
GridFill();做了我认为的那样,它可能不应该在那个循环中。