gpt4 book ai didi

mysql - 德瓦特.Data.MySql : Concurrency violation: the UpdateCommand affected 0 of the expected 1 records

转载 作者:行者123 更新时间:2023-11-29 21:17:33 26 4
gpt4 key购买 nike

我使用 C# 和 Devart.Data.MySql 来更新数据库表中的行。但我有异常(exception)

Concurrency violation: the UpdateCommand affected 0 of the expected 1 records

尝试使用相同的值更新行时。例如,我有包含两列Id(主键)和标题的表数据。我在此表中有一行 Id = 222,Title = 4444。然后我尝试使用相同的值更新此行:

using (var conn = new MySqlConnection(Cs))
{
conn.Open();

//update command
var uc = new MySqlCommand(@"UPDATE data SET Title = @Title WHERE Id = @Id", conn);
uc.Parameters.Add("@Title", MySqlType.VarChar, 50, "Title");
uc.Parameters.Add("@Id", MySqlType.VarChar, 50, "Id");

//create adapter
var adapter = new MySqlDataAdapter("", conn)
{
UpdateBatchSize = 100,
UpdateCommand = uc
};
adapter.TableMappings.Add("Table", "data");

//create table
var table = new DataTable("data");
DataColumn col = table.Columns.Add("Id", typeof(string));
col.Unique = true;
table.PrimaryKey = new[] { col };
table.Columns.Add("Title", typeof(string));

//create dataset
var ds = new DataSet();
ds.Tables.Add(table);

DataRow row = table.NewRow();
row["Id"] = "222";
row["Title"] = "4444";
table.Rows.Add(row);
row.AcceptChanges();
row.SetModified();

adapter.Update(ds);
}

之后我遇到了关于并发冲突的异常。如果我为 Title 使用另一个值,它就可以正常工作。看起来没有一些时间戳或修改值我无法使用相同的值执行更新命令。为什么?

最佳答案

看起来此行为是设计使然,可以通过提供以下选项作为您的连接字符串来更改:

Found Rows=true;

此选项是在版本 7.0.25 中引入的,如所述 here .

关于mysql - 德瓦特.Data.MySql : Concurrency violation: the UpdateCommand affected 0 of the expected 1 records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com