【发布时间】:2016-10-21 20:07:04
【问题描述】:
这是我的桌子:
学生:StudentId int PK autoincrement,Name varchar(20)
当我尝试更新最后添加的记录时,出现错误:
错误:Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.
这是我的代码:
using (var connection = new SqlConnection("MyConnectionstring"))
{
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.SelectCommand = new SqlCommand("select * from Student", connection);
DataTable dt = new DataTable();
adapter.Fill(dt);
DataRow row = dt.NewRow();
row["Name"] = "Abc";
dt.Rows.Add(row);
var addedRecords = dt.GetChanges(DataRowState.Added);
adapter.Update(dt);
dt.AcceptChanges();
DataRow lastRow = dt.Rows[dt.Rows.Count - 1];
row["Name"] = "Pqr";
adapter.Update(dt); //Error Here
connection.Close();
}
谁能告诉我为什么会这样?有什么办法可以解决这个问题?
【问题讨论】:
-
您修改了同一行两次。那是故意的吗?还是打算修改最后一行?
-
我想,如果要修改lastrow,int lastrow = dt.Rows.Count - 1; row[lastrow]["Name"] = "pqr";
-
@PanagiotisKanavos:首先我想添加记录,然后我想更新最近添加的记录,实际上我试图了解 rowstate 的过程,这就是我这样做的原因
-
@sowjanyaattaluri :我想修改数据表和数据库表中的最后一行
-
需要在数据库表中编写查询修改。
标签: c# .net datatable ado.net dataadapter