Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Nested transactions

[es] :: .NET :: .NET Desktop razvoj :: Nested transactions

[ Pregleda: 1470 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cesare
Misko Petrovic

Član broj: 55805
Poruke: 201
*.dynamic.isp.telekom.rs.



+1 Profil

icon Nested transactions26.12.2011. u 12:51 - pre 149 meseci
Pozdrav svima !!!

Napravio sam zasebnu klasu u programu koja izvrsava upite u MySQL bazi i vraca dataset sa podacima. Kod izvrsavanja upita ide ovako:

Code:

try
{
    MySqlConnection Conn = new MySqlConnection(ovde su podaci za ConnectionString);
    Podaci.Tables.Clear(); // 'Podaci' je dataset definisan na nivou cele MySQL klase
    Conn.Open();
    MySqlTransaction Transakcija = Conn.BeginTransaction();
    foreach (string Upit in ListaUpita) // Lista upita je tekstualna lista upita koji trebaju da se izvrse redosledom u listi
    {
         switch (Upit.StartsWith("SELECT"))
         {
               case true:
                     //ovde ide popunjavanje dataseta Podaci preko MySQLAdapter-a
               break; 
               case false:
                     //ovde izvrsavanje azuriranja (INSERT ili UPDATE)
               break;
         }
    }
    Transakcija.Commit();
    Conn.Close();
}
catch (Exception ex)
{
     ovde ide hvatanje ex.Message u javnu tekstualnu promenljivu
}
ListaUpita.Clear();


Problem nastaje kada dodje do greske u izvrsavanju nekog od upita (najcesce azuriranja INSERT ili UPDATE). Tada se ponovnim prosledjivanjem liste upita i pokusaje izvrsenja istih javlja greska 'Nested transactions are not supported'. Googlao sam, ali nisam uspeo da nadjem resenje. Ima li ko predloga za ovo ?

Unapred hvala ...
 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1347
*.com
Via: [es] mailing liste



+104 Profil

icon Re: Nested transactions26.12.2011. u 23:45 - pre 149 meseci
moraš da napraviš try/catch za svaki upit ka bazi (ili jedan
globalno). Ukoliko dođe do greške trebaš da odradiš rollback
transakcije
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

nikitaGradov
Beograd

Član broj: 223576
Poruke: 206
92.244.132.*



+3 Profil

icon Re: Nested transactions28.12.2011. u 09:13 - pre 149 meseci
Pokusaj ovako:

Code:

try
{
    MySqlConnection Conn = new MySqlConnection(ovde su podaci za ConnectionString);
    Podaci.Tables.Clear(); // 'Podaci' je dataset definisan na nivou cele MySQL klase
    Conn.Open();
    MySqlTransaction Transakcija = Conn.BeginTransaction();
    foreach (string Upit in ListaUpita) // Lista upita je tekstualna lista upita koji trebaju da se izvrse redosledom u listi
    {
         switch (Upit.StartsWith("SELECT"))
         {
               case true:
                     //ovde ide popunjavanje dataseta Podaci preko MySQLAdapter-a
               break; 
               case false:
                     //ovde izvrsavanje azuriranja (INSERT ili UPDATE)
               break;
         }
    }
    Transakcija.Commit();
    Conn.Close();
}
catch (Exception ex)
{
   Transakcija.RollBack();
   // ovde ide hvatanje ex.Message u javnu tekstualnu promenljivu
   // mozes da se vratis sa return
   return NEUSPJESAN_INSERT_UPDATE; // vratis neku vrijednost (recimo, indeks iz ListaUpita, da znas gdje je transakcija 'pukla'), na osnovu koje izvrsavas neku akciju u pozivajucem metodu 
}
finally
{
   // ovdje mozes da 'pocistis za sobom'
   ListaUpita.Clear();
}
// iz ove tacke vratis vrijednost o uspjesno izvrsenoj transakciji
  return USPJESAN_INSERT_UPDATE;

Programming is fun, but writing good software is hard ...
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Nested transactions

[ Pregleda: 1470 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.