同時実行エラーを取得する。これは、私のテーブルです:は、データアダプタでレコードを更新するに
学生:StudentId int PK autoincrement,Name varchar(20)
私は最後に追加されたレコードを更新しようとしていたとき、私はエラーをgetingています:
エラー: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;行[lastrow] ["Name"] = "pqr"; –
@PanagiotisKanavos:最初にレコードを追加したいのですが、最近追加されたレコードを更新したいのですが、実際には私がこれをやっている理由をrowstateのプロセスを理解しようとしています –