Witajcie Mirki. Kolejny raz swieżak w programowaniu potrzebuje waszej pomocy. Tym razem przy transakcjach.

Mam taki o to prosty kod skopiowany do konsolowego projektu z dużego programu, w którym go utworzyłem.

SqlConnection konekt = new SqlConnection("POłączenie do bazy z ustawień programu - działa w innych miejscach");
SqlTransaction trans = null;
SqlCommand cmdCreate = konekt.CreateCommand();
cmdCreate.CommandText = @"ALTER TABLE [SKARB].[dbo].[T_FKD_KONT_PLAN] ADD ID_WALUTY int";



try
{
konekt.Open();
trans = konekt.BeginTransaction();
cmdCreate.Transaction = trans;
trans.Commit();
@Vanguard1990:
Wiem, że dalej to już nie na temat ale nie mogę sobie darować.
Używaj using(){ ...} bo troszkę tu namieszałeś.
jak już zamykasz połączenie to w try-catch to w bloku finally. To co napisałeś nigdy się nie zamknie jak nie wystąpi błąd.
a samo Rollback też dobrze by było w wewnętrzny try-catch wsadzić-jak wystąpi błąd po stronie serwera albo zerwie połączenie to masz nieobsłużony wyjątek
@Vanguard1990:
Właśnie do tego służą transakcje-traktuj je jak zbiór operacji, które muszą zakończyć się powodzeniem.

Standardowym przykładem są tu operacje na rachunkach bankowych. Masz rachunek z, którego przelewasz 1 500 zł i rachunek na, który wpływa te przelane 1 500 zł.
Wykonujesz zapytanie do bazy danych - z jednego rachunku znika 1500 zł.
Wykonujesz zapytanie do bazy aby dopisać na drugim rachunku 1500 zł ale masz błąd.
Klient stracił 1500 zł