Hello. I am very new to database programming (still learning the basics of it), so when I have read up on this issue elsewhere, I have not been able to use the information given to resolve this bug. In my program's update and delete functions, I am getting this class error message:
Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.
It will happen if and only if the record that it's supposed to update/delete has been added to the database during that program's execution. I have read up on this problem and have gathered some information about it, but I really need to ask somebody to please show me a couple of lines through which to correct my code to resolve this error. After I see that, it will help me learn how to correct/avoid this error in the future, but please show me the actual code to correct this. Here is the code for the add, update, and delete functions:
Code:
private void btnAdd_Click(object sender, EventArgs e)
{
con.Open();
DataRow row = dataset.Tables["Contacts"].NewRow();
row[1] = tbFirstName.Text;
row[2] = tbMiddleName.Text;
row[3] = tbLastName.Text;
row[4] = tbSuffix.Text;
row[5] = tbHomePhone.Text;
row[6] = tbCellPhone.Text;
row[7] = tbOtherPhone.Text;
row[8] = tbStreetAddress.Text;
row[9] = tbCityAndState.Text;
row[10] = tbCountry.Text;
row[11] = tbEmail.Text;
currentRow = row;
dataset.Tables["Contacts"].Rows.Add(row);
dAdapter.Update(dataset, "Contacts");
recordShown = true;
con.Close();
}
Code:
private void btnUpdate_Click(object sender, EventArgs e)
{
if (recordShown)
{
con.Open();
currentRow[1] = tbFirstName.Text;
currentRow[2] = tbMiddleName.Text;
currentRow[3] = tbLastName.Text;
currentRow[4] = tbSuffix.Text;
currentRow[5] = tbHomePhone.Text;
currentRow[6] = tbCellPhone.Text;
currentRow[7] = tbOtherPhone.Text;
currentRow[8] = tbStreetAddress.Text;
currentRow[9] = tbCityAndState.Text;
currentRow[10] = tbCountry.Text;
currentRow[11] = tbEmail.Text;
SqlCommandBuilder updateBuilder;
updateBuilder = new SqlCommandBuilder(dAdapter);
dAdapter.Update(dataset, "Contacts");
con.Close();
}
else
{
MessageBox.Show("Please locate/add a record first.");
}
}
Code:
private void btnDelete_Click(object sender, EventArgs e)
{
con.Open();
currentRow.Delete();
dAdapter.Update(dataset, "Contacts");
clearTextBoxes();
recordShown = false;
con.Close();
}
Thanks!