dataGridView 保存更改的方法

Ways to save changes in dataGridView

我有一个包含 8 个 table 的数据库,我填充了我的数据网格视图,然后使用相同的代码块为每个 table 保存更改,但我只能保存 8 个中的 4 个 tables,其他 4 tables 给我一个错误 Concurrency violation: the UpdateCommand affected 0 of the expected 1 records 当我尝试保存其中的更改时

这就是我填充 dataGridView 的方式:

{
string script = "SELECT * FROM hatr.rbt;";
mycon = new MySqlConnection(connect);
mycon.Open();
MySqlDataAdapter ms_data = new MySqlDataAdapter(script, connect);
SD.DataTable table = new SD.DataTable();
ms_data.Fill(table);
DataSet ds = new DataSet();
dataGridView1.DataSource = table;
mycon.Close();
ds.AcceptChanges();
}

这就是我保存更改的方式:

{
string script = "SELECT id, name, Model_preparation_R_Hr, Time_for_preparation_hr, Time_for_post_processing_hr, YZV_work FROM rbt;";
mycon = new MySqlConnection(connect);
mycon.Open();
MySqlDataAdapter ms_data = new MySqlDataAdapter(script, connect);
var cb = new MySqlCommandBuilder(ms_data);
cb.GetInsertCommand();
DataSet ds = new DataSet();
ms_data.Update(dataGridView1.DataSource as DataTable);
ms_data.InsertCommand = cb.GetInsertCommand();
ms_data.InsertCommand.CommandText += "; select * from rbt where id = last_insert_id();";
ms_data.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord;        
}

我也知道错误发生在以下行:

ms_data.Update(dataGridView1.DataSource as DataTable);

两个代码块对于每个 table 都是相同的,但是由于某种原因需要在 dataGrid 中保存更改的第二个代码块给了我一个我之前提到的 updateCommand 错误,我无法弄清楚为什么我对某些 table 会收到此错误,而对其他人却不会收到此错误。 那么也许还有其他方法可以保存 dataGridView 中的更改?因为这是我目前唯一能想到的

我终于找到了 Concurrency violation: the UpdateCommand affected 0 of the expected 1 records 错误的原因。考虑到我已经在 MySql Workbench 中创建了我的数据库,并且我试图通过 dataGridView 在我的应用程序我发现 MySql WorkbenchdataGridView 中的 FLOAT 字段之间存在冲突。当你在 MySql Workbench 中创建一个浮点数时,它应该用一个点来写,比如 "0.1" 并且在 dataGridView 中它似乎应该用逗号写像 "0,1" 所以一个浮动字段但在不同的情况下:在 mysql Workbench 和 dataGridView 中有两种不同的编写方式并且它发生一个错误,正如我所看到的这种情况,我当然在某些方面可能是错误的,但我只是将所有 FLOAT 字段重新创建为 DOUBLE,现在它可以工作了。