Myślę, że jest to odpowiedni dział, jak na ten problem. W końcu język to C#, do rzeczy:
public void Update()
{
if (adapter != null)
{
SqlConnection myConnection = new SqlConnection(connectionString);
SqlCommandBuilder myComBuilder = new SqlCommandBuilder(adapter);
SqlTransaction myTransaction = myConnection.BeginTransaction();
try
{
adapter.Update(table);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, "An error has occured:", MessageBoxButtons.OK);
if (myTransaction != null)
{
myTransaction.Rollback();
myTransaction = null;
MessageBox.Show("Couldn't update database. Data havent been saved. Correct data.");
}
}
finally
{
if (myTransaction != null)
{
myTransaction.Commit();
MessageBox.Show("Data have been saved succesfuly!");
myTransaction=null;
}
myConnection.Close();
}
}
}
Taki książkowy przykład, a mimo to wywołuje wyjątek:
Specjalnie, podczas edycji, zostawiam pole w dataGridView puste (kolumna nie akceptuje nulli), aby sprawdzic jak się zachowa transakcja dla owej aktualizacji bazy danych.
Mam DataGridView połączony z DataTable.
Excepion podzcas aktualizacji:
Nieprawidłowa operacja. Połączenie zostanie przerwane.
dla linijki:
SqlTransaction myTransaction = myConnection.BeginTransaction();
o co chodzi?