Delphi - TIBUpdateSQL komponens

Interbase 11. rész

forráskód letöltése
A sorozat e heti részében az IBUpdateSQL komponenssel ismerkedünk meg, amellyel lehetőségünk lesz a csak olvasható adathalmazok frissítését, törlését, módosítását elvégeznünk. Amikor helyi adattáblákkal dolgozunk, gyakran használunk például DBGrid komponenst az adatok megjelenítésére, amellyel a módosításokat is könnyen menthetjük. Amennyiben az IBQuery komponenst használjuk, akkor közvetlenül nem módosíthatjuk egy SELECT utasításból származó adatainkat. Ezt a feladatot kell elvégeznie az IBUpdateSQL komponensnek. A komponenst csak tárolt frissítésekkel lehet használni (a IBQuery komponens CachedUpdates tulajdonsága igaz). A módszer azon alapszik, hogy amíg a Query komponens ApplyUpdates metódusát nem hívjuk meg, addig a módosítások csak ideiglenesen tárolódnak. Így sok INSERT, UPDATE és DELETE parancs futhat le a kiszolgálón a tárolt adatokkal: a szükséges SQL parancsokat az IBUpdateSQL komponens tárolja.

A módszer lényeges előnye a hálózati forgalom csökkenése, a kiszolgáló leterheltsége csökken és könnyebben kezelhetjük a módosítási ütközéseket, viszont több memória szükséges az ügyfélgépen.

A komponensünk szerepe tehát az, hogy egy IBQuery (IBTable) komponensnek módosítási utasításokat adjon, így lekérdezéseink eredménye szerkeszthető. Kulcsfontosságú tulajdonságai a DeleteSQl, az InsertSQL és a ModifySQL. Fontos a Query objektum UpdateObject tulajdonsága, amellyel az IBUpdateSQL komponenshez kapcsolódik. Az UPDATE utasítások akkor futnak le, amikor módosításainkat alkalmazzuk, és átküldjük a kiszolgálónak.

A komponens használata

Ha megírtuk egy IBQuery komponensben a lekérdezést, akkor az UpdateObject tulajdonságon keresztül kapcsoljuk egy IBUpdateSQL komponenshez. Az IBUpdateSQL komponensünkhöz egy szerkesztőt használhatunk, ha a jobb egérgombbal rákattintunk, és kiválasztjuk a helyi menüből az UpdateSQL Editor… pontot. Ez a szerkesztő két részből áll. Az első lapon megadhatjuk a feltételeket az SQL utasítás létrehozásához. Egy összekapcsolással kiválaszthatjuk a frissítendő táblát és a mezőket. Ha itt végeztünk a beállításokkal, meg kell nyomnunk a Generate SQL gombot. Ablakunk átvált a második lapra és létrehozza a megfelelő SQL kódokat mindhárom művelethez.


A komponens legfontosabb tulajdonságai:
  • DataSet: Azt az adatbázist azonosítja, amelyhez hozzárendeltük az IBUpdateSQL komponenst. Ha futási időben hozzuk létre, akkor ezt az értéket mindenféleképpen be kell állítanunk.
  • DeleteSQL: Adatok törlésekor használt SQL utasítást adhatunk meg.
  • InsertSQL: Adatok beszúráskor használt SQL utasítást adhatunk meg.
  • Query: Azt az IBQuery-t azonosítja, amelyhez a komponens csatlakozik. Az UpdateKind paraméter mutatja meg, hogy SQL parancsot kell végrehajtani. Lehetséges értékei: ukModify, ukInsert, ukDelete.
  • ModifySQL: Adatok módosításakor használt SQL utasítást adhatunk meg.
  • RefreshSQL: Frissítéskor használt SQL utasítást adhatunk meg.
Metódusok:
  • Apply: Az UpdateKind paraméter által megadott SQL utasítást futtatja.
  • ExecSQL: SQL utasítások futtatására használhatjuk, amely frissít egy csak olvasható eredményhalmazt. A futtatni kívánt SQL utasítást az UpdateKind paraméterrel választhatjuk ki.
  • SetParams: A paramétereket állítja be az SQL utasítás futtatása előtt. A futtatni kívánt SQL utasítást az UpdateKind paraméterrel állíthatjuk be.

Interbase cikksorozat