Transakcje, błąd

0

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?

0

A to nie jest tak, że najpierw trzeba otworzyć połączenie, a potem transakcję?

0

dzięki,
mam jeszcze jedno pytanie podchodzące pod tematykę.
Mam program, który za pomocą 1 adaptera ładuje po sobie kilkanascie tabel do gridów.
Jak to się ma do updateowania danych?

Przekazuję jako parametr adapter.Update() obiekt DataTable reprezentujący tabelę, którą chce zupdateowac.
Update przebiega bez wyjątków, ale dane nie zapisują się.

Czy 1 adapter może służyć do ładowania kilku tabel a później do updatewania wedle uznania?

0
orłowo napisał(a)

Czy 1 adapter może służyć do ładowania kilku tabel a później do updatewania wedle uznania?
Nawet powinien.
Dane które uaktualniasz (Update) muszą być wcześniej pobrane (Fill) z tego samego adaptera.

1 użytkowników online, w tym zalogowanych: 0, gości: 1