HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

TIBTransaction komponens


Interbase 5. rész

Példaprogram letöltése

7322 bájt

A sorozat mai cikkében az TIBTransaction komponenssel ismerkedünk meg. Megnézzük, hogy mik is azok a tranzakciók, miért van rájuk szükség. Bemutatjuk a komponens tulajdonságait, eseményeit és metódusait. Beépítve a példaprogramba tanulmányozhatjuk, hogyan teszi biztonságosabbá az adatok kezelését.
Tranzakciónak nevezzük az egyetlen logikai egységet képző adatbázis-kezelési műveletet. Vagy a tranzakció összes művelete megtörténik, vagy egyik sem. Egy hiba esetén a teljes tranzakció visszagörgetődik, beáll a tranzakció előtti konzisztens állapot.

Általános javaslat, hogy egy tranzakció a lehető legkevesebb módosítást tartalmazza (csak a szigorúan összetartozókat, amelyek egy egységet alkotnak), hogy gyors legyen. Kerüljük az olyan tranzakciókat, amely felhasználói beavatkozásra vár a befejezéshez, mert ha a felhasználó például otthagyja a gépet a tranzakció nagyon hosszú ideig aktív maradhat. A több rekordot egyszerre frissítő UPDATE utasítások és a tárolt frissítések használata segít abban, hogy a tranzakciók kis méretűek és gyorsak legyenek.

Az IBTransaction komponens segítségével teljes mértékben felügyelhetjük a tranzakciókat. Fontos tudni, hogy legalább egy komponens szükséges minden olyan programban, amelyik az InterBase Express komponenscsomagot használja. Ha egy tranzakció-komponenshez kapcsolt adatkészlet szerkesztését megkezdjük, a tranzakció automatikusan elindul.

Most nézzünk meg egy példakódot arra, hogyan használjuk a komponenst.
Procedure TForm1.Button1Click(Sender : TObject);
Begin
    IBTransaction1.CommitRetaining; //IBTransaction1.RollbackRetaining;
End.
A következő kód is helyes, de mivel lezáródik a kurzor meg kell nyitnunk az adatforrást:
Procedure TForm1.Button1Click(Sender : TObject);
Begin
   IBTransaction1.Commi; //IBTransaction1.Rollback;
   IBTransaction1.StartTransaction;
   DataSourceX.DataSet.Open;
End.
Ne felejtsük el, hogy az InterBase lezár minden kurzort, ha a tranzakció véget ér. Ami azt jelenti, hogy újra meg kell nyitni, és újra ki kell nyerni belőle az adatokat, attól függetlenül, hogy változtattunk-e rajtuk. Ha véglegesítjük, vagy visszagörgetjük az adatokat, a CommitRetaining vagy a RollbackRetaining parancsokkal megkérhetjük az InterBase-t, hogy maradjon a tranzakcióban, nyitva hagyva az adatkészletet. Ennek a viselkedésnek az az oka, hogy a tranzakciók az adatok egy pillanatnyi állapotát jelentik. Ha egy tranzakció befejeződött, az adatokat újra kell olvasni, mert közben más felhasználók is módosíthattak rajtuk.

A komponens gyakrabban használt tulajdonságai:
  • Active: Beállíthatjuk, hogy a tranzakció aktív legyen. A tulajdonság használatával meg is tudhatjuk, hogy aktív-e a tranzakció vagy sem.
  • DatabaseCount: A tranzakció részét képző adatbázisok számát adja.
  • Databases: A beállított index által visszaadott adatbázist mutatja.
  • DefaultAction: Milyen tranzakció következzen be, amikor egy az IdleTimer tulajdonságnál beállított idő eltelik. Négy lehetséges értéke van:
- taRollback: A tranzakció visszagörgetődik.
- taCommit: A tranzakció végrehajtódik.
- taRollbackRetaining: A tranzakció visszagörgetődik, de az adatkészlet nyitva marad.
- taCommitRetaining: A tranzakció végrehajtódik, de az adatkészlet nyitva marad.
  • DefaultDatabase: Mely IBDatabase komponensre hassanak a tranzakciók.
  • IdleTimer: Mennyi idő teljen el addig másodpercekben, amíg a DefaultAction tulajdonságnál beállított tranzakció automatikusan bekövetkezik.
  • InTransaction: A tulajdonság segítségével megállapítható, hogy egy tranzakció folyamatban van-e vagy sem.
  • Params: A tranzakció paramétereit állíthatjuk be. Ritkán használjuk.
A komponens eseményei:
  • OnIdleTimer: Az IdleTimer tulajdonság által meghatározott idő elérésekor aktiválódik. Lehetőséget biztosít például arra, hogy tájékoztassuk a felhasználót, hogy a tranzakció végbement, mert a gép sokáig nem kommunikált az adatbázissal.
A komponens metódusai:
  • AddDatabase: Újabb adatbázis tranzakció-kezelését bízhatjuk a komponensre.
  • CheckDatabasesInList: Ellenőrizhetjük, hogy az adatbázis benne van-e a tranzakció listájában. Ha nincs, egy kivétel keletkezik.
  • CheckInTransaction: Ellenőrizhetjük, hogy a tranzakció aktív-e, és hogy a tranzakció listájában található-e adatbázis. Ha a feltételek nem teljesülnek, akkor egy kivétel keletkezik.
  • CheckNotInTransaction: Azonos funkciójú eljárás, mint az előző, csak az ellenőrzést fordított értelemben végzi el.
  • Commit: Mindenféle frissítés, törlés, módosítás véglegesen belekerül az adatbázisba, és a tranzakció befejeződik. Az eljárás hívása után a következő tranzakció elindításához a StartTransaction metódust kell meghívni. A Commit meghívása előtt ellenőrizzük, hogy van-e tranzakció az InTransction tulajdonság használatával.
  • CommitRetaining: Hasonló funkciójú metódus, mint az előbbi eljárás, de nem zárja le az aktuális tranzakciót. Utána nem kell meghívni a StartTransaction metódust.
  • FindDatabase: Megkeresi a megadott IBDatabase komponenshez tartozó indexet a lista alapján.
  • RemoveDatabase: Egy IBDatabase komponenst töröl a listából.
  • RemoveDatabases: Az IBTransaction komponenshez kapcsolt összes adatbázis-komponenst törli.
  • Rollback: A tranzakciót visszagörgeti, és lezárja azt. Az eljárás hívása után a következő tranzakció elindításához a StartTransaction metódust kell használni. A Rollback meghívása előtt ellenőrizzük, hogy van-e aktív tranzakció az InTransaction tulajdonság használatával.
  • RollbackRetaining: Hasonló funkciójú metódus, mint az előbbi eljárás, de nem zárja le az aktuális tranzakciót. Utána nem kell meghívni a StartTransaction metódust.
  • StartTransaction: Új tranzakciót indíthatunk el.

A mellékelt példa magyarázatai a forráskódban lettek elhelyezve.
Próbáljuk ki a tranzakciók hatását: változtassunk az adatokon, majd véglegesítsük, vagy görgessük vissza a változásokat a Tranzakciók menü valamelyik elemét használva. Figyeljük meg a hatásokat.


Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 384. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |