Delphi - dbExpress paletta komponensei

dbExpress paletta 1. rész

forráskód letöltése
Újonnan induló sorozatunkban a Delphi 6-tól kezdve létező dbExpress nevű paletta komponenseit vesszük sorra és megvizsgáljuk, hogy miként lehet hasznosítani azokat alkalmazásainkban.
A dbExpress egy olyan felület, amely lehetőséget ad SQL szerverekhez való hozzáféréshez az adatbázis típusától függetlenül, több platformon is. Egy általános interfészt biztosít többféle SQL szerverhez való hozzáféréshez. Minden támogatott szerverhez egy meghajtót szolgáltat, amely tartalmazza az általános dbExpress interfészeket a lekérdezések és tárolt eljárások feldolgozásához.
A dbExpress használható Windows és Linux operációs rendszerek alatt is, mivel a meghajtók mindkét platformon elérhetők, Windows alatt Dynamic-Link Library (DLL), Linux alatt pedig Shared Object File formájában.
Lehetővé teszi a gyors és egyszerű hozzáférést az ún. unidirectional (egyirányú) adatkészletekhez. Más adatkészletekhez hasonlóan SQL lekérdezéseket küld el az adatbázis szervernek, és amennyiben a lekérdezésnek van visszatérési értéke (pl. rekordok), úgy egy ún. kurzor segítségével hozzáférhet ezekhez. Csakhogy az unidirectional adatkészlethez unidirectional kurzort is kapunk. Ez azt jelenti, hogy nem hoz létre buffert a memóriában az adatoknak, és ettől gyorsabb, és erőforrás-kímélőbb is más adatkészleteknél. Ennek viszont hátránya, hogy így kevésbé hatékonyabb, mint más „normális” adatkészletek, mivel nagyon sok lehetőséget (amik a TDataSet osztályban megtalálhatók) nem használhatunk, mivel nincsenek implementálva, vagy egyszerűen hibát okoznak. Például a következő dolgokra kell odafigyelnünk:
  • a navigálás csak a First és a Next metódusokkal lehetséges, a többi vagy hibát okoz, vagy egyszerűen nem működik;
  • mivel az adatok szerkesztéséhez szükséges egy buffer, ezért ezt a műveletet nem támogatja. A CanModify property értéke mindig hamis, így ha Edit állapotba szeretnénk állítani az adatkészletet, akkor hibaüzenetet kapunk. Az adatok módosítása azért nem lehetetlen, két módszer is alkalmazható. Az egyik az UPDATE SQL parancs, a másik, ha az adatkészletet egy ún. kliens adatkészlethez kapcsoljuk;
  • nem támogatja a szűrést (Filter), mivel ez a művelet több rekorddal dolgozik együtt, amihez szintén szükség lenne bufferre. Ha mégis megpróbáljuk, hibaüzenetet kapunk. A szűrést viszont megoldhatjuk úgy, hogy már az SQL lekérdezésben megadjuk azokat a feltételeket, amelynek megfelelő rekordokra van csak szükség;
  • nem támogatja a lookup mezőket, ha mégis megpróbálunk ilyet használni, akkor az nem fog működni.
Ezen hátrányok ellenére a dbExpress nagyon jól használható, egyszerű, és a leggyorsabb adathozzáférési mechanizmust használja.
TSQLConnection komponens
TSQLConnection komponensen keresztül tudunk kapcsolatot létesíteni egy adatbázis szerverrel, vagyis ez az osztály reprezentálja a kapcsolatot egy dbExpress adatbázishoz.
A mellékelt példához az Interbase példa adatbázisát használjuk. Ha az employee.gdb nem az alapértelmezett helyen található (C:\Program Files\Common Files\Borland Shared\Data\employee.gdb), akkor a program futtatása előtt az SQLConnection1 komponens Params property-jében a Database mező értékét javítsa.
Ezt a kapcsolatot használhatjuk fel a többi SQL adatbázis komponensnél, melyet az SQLConnection property-kben tudunk beállítani.
A TSQLConnection komponens együttműködik a dbExpress meghajtóval és két .ini fájllal (dbxdrivers.ini és dbxconnections.ini). A dbxdrivers.ini fájl tartalmazza a telepített meghajtókat, és a hozzájuk tartozó alapbeállításokat, például a meghajtó DLL nevét. A dbxconnections.ini fájlban név szerint vannak tárolva beállítások, melyek egy-egy adatbázis kapcsolatra jellemző adatokat tartalmaznak. Ezeket felhasználhatjuk a TSQLConnection komponensnél, de saját beállításokat is készíthetünk, ha duplán kattintunk a komponensen.
A TSQLConnection komponens természetesen rendelkezik a megfelelő property-kkel, metódusokkal és eseményekkel a bejelentkezéshez, tranzakció kezeléshez és a metaadatok kezeléséhez.
ActiveStatements
Az adatbázis szerveren éppen futó utasítások (műveletek) száma. A property használatával ellenőrizhetjük, hogy az alkalmazás nem érte-e el a kapcsolat által engedélyezett határt, ami a futtatható műveletek számára vonatkozik (lásd MaxStmtsPerConn property). Ez különösen fontos, ha az AutoClone property értéke hamis, mert ha túllépjük ezt a határt, miközben az AutoClone property értéke hamis, akkor hibaüzenetet kapunk. Ezt elkerülhetjük, ha nem nyitunk meg új táblát, és nem futtatunk lekérdezéseket addig, amíg az ActiveStatements property értéke megegyezik a MaxStmtsPerConn property értékével, kivéve akkor, ha ez utóbbi értéke nem 0, mivel ekkor nincs ilyen korlátozás.
AutoClone
Igaz érték esetén automatikusan létrehoz egy új kapcsolatot az adatbázissal, amikor erre szükség van. Ilyen eset például, amikor túllépjük a szerver által maximálisan futtatható műveletek számát. Alapesetben a property értéke igaz, és amikor az ActiveStatements és a MaxStmtsPerConn property értéke megegyezik, és egy új műveletet (pl. lekérdezés) indítunk, akkor létrehoz egy új kapcsolatot. Ebben az esetben úgy viselkedik a komponens, mintha a szerveren futtatható műveletek száma nem lenne korlátozva, viszont ez több erőforrást igényel.
Connected
A property-ből kiolvasható, hogy a csatlakozás aktív-e vagy sem. Ez nem egy csak olvasható property, használható a kapcsolat létrehozására, ha igaz értéket adunk neki. Hamis érték adása esetén a kapcsolat megszakad.
Igaz érték adásakor fut le a BeforeConnect esemény, ha pedig létrejött a kapcsolat, akkor az AfterConnect. Ha a LoginPrompt property értéke igaz, akkor megjelenik egy bejelentkezés ablak is.
Ha hamis értéket adunk a property-nek, akkor létrejön a BeforeDisconnect esemény, ha pedig a kapcsolat ténylegesen megszűnt, akkor az AfterDisconnect.
ConnectionName
A kapcsolat neve. A dbxconnections.ini fájlban tárolt beállítások egyikének nevét adhatjuk meg a property-ben. Ha megadjuk, akkor a DriverName és a Params property-k automatikusan értéket kapnak. Ha duplán kattintunk a komponensen, akkor saját beállításokat is létrehozhatunk.
Ha szerkesztési és futási időben különböző beállításokat szeretnénk használni, akkor a konfigurációs fájl betöltésére használhatjuk a LoadParamsOnConnect property-t és a LoadParamsFromIniFile eljárást. Ez viszont felesleges, mivel a ConnectionName property beállításakor a megfelelő értékek betöltődnek a DriverName és a Params property-kbe, és a Form-mal együtt elmentődnek. Valójában a dbxconnections.ini fájlra nincs is szükség, csak ha a LoadParamsOnConnect property értéke igaz, vagy a LoadParamsFromIniFile használatakor.
ConnectionState
Ebből a property-ből kiolvasható a kapcsolat jelenlegi állapota. Értékei a következők lehetnek:
  • csStateClosed: a Connected property értéke hamis, nincs kapcsolat az adatbázissal;
  • csStateOpen: A Connected property értéke igaz, a kapcsolat létrejött az adatbázissal;
  • csStateConnecting: a kapcsolódás az adatbázishoz folyamatban van, még nem fejeződött be;
  • csStateExecuting: a komponens egy SQL parancsot futtat a szerveren, ami még nem fejeződött be;
  • csStateFetching: a komponens információkat kap az adatbázistól;
  • csStateDisconnecting: a kapcsolat bontása folyamatban van, még nem fejeződött be.
DataSets
Egy tömb property, melynek elemei a TCustomSQLDataSet osztályból származó komponensek, amelyek ezt a kapcsolatot használják. Csak az aktív komponenseket tartalmazza a lista, tehát csak azokat, melyek Active property-jének értéke igaz. Az első elem indexe 0. Az elemek számát a DataSetCount property tartalmazza.
DriverName
Az SQL adatbázishoz való kapcsolódáshoz szükséges meghajtó neve. Egy a dbxdrivers.ini fájlban felsorolt meghajtó nevét kell itt megadni, ha nem használjuk a ConnectionName property-t. Ha használjuk, akkor ennek a property-nek az értéke automatikusan beállítódik. Alapesetben az INTERBASE, MYSQL, ORACLE, és DB2 meghajtókat alkalmazhatjuk. A használható meghajtók nevei lekérdezhetők a GetDriverNames függvénnyel.
A property beállításakor a LibraryName és a VendorLib property-k értékei automatikusan beállítódnak a megfelelő értékekre.
GetDriverFunc
A LibraryName property-ben megadott meghajtóban található függvény neve, amely a felső szintű dbExpress interfészt adja vissza. Ennek a függvénynek a neve szintén a dbxdrivers.ini fájlban van megadva.
A LibraryName, VendorLib és a GetDriverFunc property-k értékei a Form-mal együtt eltárolódnak, ezért a dbxdrivers.ini fájlra nincs szükség a program futtatásához.
InTransaction
A property értéke akkor igaz, amikor éppen egy tranzakción belül vagyunk. Ekkor az összes szerverrel folytatott kommunikáció, művelet akkor hajtódik végre, amikor a tranzakció sikeresen befejeződik. A property értéke StartTransaction eljárás meghívása után igazra vált, és a Commit illetve RollBack eljárások meghívása után újra hamis lesz.
KeepConnection
Ha ennek a property-nek az értéke igaz, akkor a kapcsolat akkor sem szűnik meg, ha nincs DataSet megnyitva. Távoli szervereket használó, vagy az adatkészleteket gyakran megnyitó-lezáró alkalmazásoknál az értéke legyen igaz (alapértelmezett), mivel így a hálózati forgalom csökkenthető, illetve az alkalmazás futása gyorsabb lesz, és nem kell minden esetben létrehozni a kapcsolatot, miután meg lett szakítva.
LibraryName
A dbExpress adatbázis meghajtó neve, ami szükséges az SQL szerverrel történő kapcsolódáshoz. Értékét a DriverName property értéke határozza meg, ezért nincs szükség megadására.
LoadParamsOnConnect
Ha ennek a property-nek az értéke igaz, akkor a kapcsolat létrehozása előtt tölti be a ConectionName property-ben megadott kapcsolathoz tartozó adatokat (DriverName és Params property-k).
LocaleCode
A property annak az országnak a kódját tartalmazza, amely ország nyelvi szabályai szerint történik a szöveges adatok rendezése. Az alapértelmezett értéke 0, ekkor nincs tekintettel a nyelvi szabályokra. Ha megadjuk az ország kódját, akkor vegyük figyelembe, hogy ez hatással van a rendezés sebességére, lassítani fogja azt. Éppen ezért csak akkor adjuk meg, ha biztosak vagyunk benne, hogy a rendezendő szöveges adatok tartalmaznak ország-specifikus karaktereket is.
Magyarország kódja 1038.
MaxStmtsPerConn
A property-ből megtudható, hogy az adatbázis szerver egyszerre hány kérést tud futtatni kapcsolatonként. Ha a property értéke 0, akkor nincs korlátozás. Ha nagyobb, akkor a lekérdezések, és adatkészletek megnyitása előtt ellenőriznünk kell az éppen futtatott kérések számát. Ezt az ActiveStatements property-ből tudhatjuk meg. Ha az AutoClone property értéke igaz, akkor nem kell ellenőrzést végeznünk, mivel ha túllépnénk a limitet, akkor automatikusan létrejön egy új kapcsolat.
MetaData
A metaadatok hozzáféréséhez szükséges interfészt adja meg. Használatára közvetlenül nincs szükség, mivel a szükséges adatokat különböző függvényekkel is lekérdezhetjük (pl. GetFieldNames, GetIndexNames, GetProcedureNames, GetProcedureParams, és GetTableNames). Ha ennél több információra van szükség, akkor pedig használhatjuk az adatkészletek (DtaSets) SetSchemaInfo metódusát.
Params
Ez egy TStrings típusú property, amiben a csatlakozáshoz szükséges paraméterek vannak felsorolva, paraméternév=érték formában. Amikor a ConnectionName property-nek értéket adunk, akkor az annak megfelelő értékek beolvasása megtörténik a dbxconnections.ini fájlból. A paraméterek értékeit szerkesztési időben megváltoztathatjuk, de ennek csak akkor van értelme, ha nem használjuk a LoadParamsFromIniFile eljárást, és a LoadParamsOnConnect property-t.
A paraméterek az adatbázis típusától függően mások lehetnek, egy kivételével. A Database paraméter minden esetben kell hogy szerepeljen. Ez InterBase adatbázis esetén a .gdb fájl neve.
Az alábbi paraméterek minden adatbázis típusnál megtalálhatók:
  • DriverName: a DriverName property értéke (részletesen lásd ott).
  • Database: ennek értéke adatbázis típusonként változik. A legtöbb adatbázisnál ez a kliens oldali alias neve. InterBase adatbázisnál a .gdb fájl neve.
  • BlobSize: azoknál a meghajtóknál, amelyek nem adják meg a BLOB mezők méretét, azoknál ebben a paraméterben lehet meghatározni kB-ban. Ha a paraméter értéke –1, akkor a méret nincs korlátozva.
  • User_name: a bejelentkezéshez szükséges login név.
  • Password: a login névhez tartozó jelszó.
  • LocaleCode: a LocaleCode property értéke (részletesen lásd ott).
ParamsLoaded
A property értéke igaz, ha a paramétereket sikeresen beolvasta dbxconnections.ini fájlból. A property-t ne használjuk közvetlenül, mivel ez a Connections Editor-nak van fenntartva.
SQLConnection
Egy ISQLConnection interfészt ad vissza, amin keresztül az SQL kapcsolat létrejött. Az interfész használatára közvetlenül nincs szükség, mivel minden művelet implementálva van a TSQLConnection osztályba.
SQLHourGlass
Ha a property értéke igaz, akkor a hosszabb műveletek alatt az egér kurzor típusa rSQLWait lesz. Ez a következő műveletek alatt fordulhat elő:
  • csatlakozás az adatbázis szerverhez;
  • adatok lekérdezése az adatbázisból;
  • műveletek futtatása az Execute metódussal.
Ha a property értéke hamis, akkor a kurzor a hosszabb ideig tartó műveletek alatt is változatlan marad.
TableScope
A property értéke meghatározza, hogy milyen információk kerüljenek a listába a GetTableNames eljárás meghívásakor.
TraceCallbackEvent
Ez egy csak olvasható property, amelyből megtudhatjuk, hogy van-e olyan eljárás, ami az adatbázis szerverrel történő kommunikációt figyeli. Például az SQLMonitor komponens használ ilyet a kommunikáció listában történő tárolására (log).
A property-nek közvetlenül nem adhatunk értéket, ha saját eljárást szeretnénk hozzárendelni, akkor használjuk a SetTraceCallbackEvent eljárást.
TransactionsSupported
A property értékéből megállapítható, hogy az adatbázis szerver támogatja-e a tranzakció kezelést. Ha a property értéke igaz, akkor igen, egyébként pedig nem.
VendorLib
Az adatbázis kliens oldali támogatásához szükséges DLL neve. Ennek neve automatikusan beállítódik a DriverName property beállításakor. A megfelelő értékek a dbxdrivers.ini fájlban vannak tárolva.
DataSetCount
A DataSets property-ben felsorolt adatkészletek száma, melyek ezt a kapcsolatot használják. Ebben a listában csak az aktív (megnyitott) adatkészletek találhatók meg. A property értéke folyamatosan változik egy-egy adatkészlet megnyitásakor, illetve bezárásakor.
LoginPrompt
A property-vel megadhatjuk, hogy a kapcsolat létrehozásakor megjelenjen-e a Login (bejelentkezés) ablak. Ebben az ablakban a felhasználónak meg kell adnia az adatbázissal való kapcsolat létesítéséhez szükséges nevet és jelszót. A uses kulcsszó után hivatkozni kell a DBLogDlg unit-ra. Az ablak a BeforeConnect esemény után, és az AfterConnect esemény bekövetkezése előtt jelenik meg, kivéve akkor, ha az OnLogin eseményt felhasználjuk. Ez utóbbi esetben nincs szükség a DBLogDlg unit-ra való hivatkozásra.
Ha a felhasználó nem jó nevet és jelszót ad meg, akkor kapcsolat nem jön létre.
A TSQLConnection osztály függvényei és eljárásai
CloneConnection
Létrehoz egy új TSQLConnection objektumot, és átmásolja ennek az objektumnak a tulajdonságait. Az új objektum felszabadításáról nem kell gondoskodnunk, ez automatikusan megtörténik.
CloseDataSets
Bezárja az összes adatkészletet, ami ezt a kapcsolatot használja, anélkül, hogy megszakítaná a kapcsolatot az adatbázis szerverrel. A szokásos módszer az adatkészletek bezárására a Close metódus, azonban ha ezt használjuk, akkor a kapcsolat is megszűnik. Ezért használjuk a CloseDataSets metódust, így nem kell később újra csatlakozni a szerverhez.
Commit
A Commit eljárásnak a tranzakcióknál van jelentősége. Az eljárás véglegesíti a tranzakcióban elvégzett műveleteket. Paraméterként egy TTransactionDesc típusú értéket kell megadnunk, amivel a tranzakciót azonosítjuk (lásd StartTransaction). Ha csak az éppen véglegesített tranzakció létezett, akkor az InTransaction property értékét hamisra állítja.
Execute
Az Execute függvénnyel tudunk egy SQL script-et futtatni az adatbázis szerveren. Elsősorban akkor használható ki, ha olyan script-et futtatunk, aminek nincs visszatérési értéke, illetve adatdefiníciós műveletet hajtunk végre (DDL).
A függvény első paramétere a futtatandó SQL script, sztring formátumban. A második paraméter egy TParams típusú objektum, melyben az SQL script paramétereit adhatjuk meg. Ez TParam típusú objektumokat tartalmaz, minden paraméterhez egyet-egyet. A paraméterek sorrendje fontos, a script-ben lévő sorrenddel meg kell egyeznie, mivel a paramétereket nem név, hanem sorszám alapján azonosítja. Ha nem használunk paramétereket, akkor adjunk meg nil-t.
A harmadik paraméter egy pointer egy TCustomSQLDataSet típusú objektumra, amiben a lekérdezés eredményét kapjuk meg. Ha a lekérdezésnek nincs eredménye, akkor adjunk meg nil-t.
A függvény visszatérési értéke az érintett rekordok száma.
ExecuteDirect
Az Execute függvény egyszerűsített változata arra az esetre, ha nem akarunk paramétereket használni. Az SQL sztring típusú paraméterében kell megadni a futtatandó SQL script-et. A függvény visszatérési értéke 0, ha sikeres volt művelet, ellenkező esetben egy dbExpress hibakódot kapunk.
GetFieldNames
A paraméterként megadott TStrings osztályból származtatott objektumot feltölti a szintén paraméterként megadott tábla mezőinek neveivel. Ha a paraméter tartalmazott sztringeket, akkor azok törölve lesznek.
GetIndexNames
A GetFieldNames eljárástól annyiban különbözik, hogy a TStrings osztályból származtatott objektumot a tábla indexeinek nevével tölti fel.
GetProcedureNames
A paraméterként megadott TStrings osztályból származtatott objektumot feltölti az adatbázis tárolt eljárásainak neveivel.
GetProcedureParams
A paraméterként megadott tárolt eljárás paramétereit beolvassa a szintén paraméterként megadott TList típusú objektumba. A listának üresnek kell lennie az eljárás meghívásakor.
Az eljárás meghívása után a lista minden eleme egy SPParamDesc típusú rekordra mutató pointert tartalmaz (List.Items). Ez a rekord tartalmazza az összes szükséges információt az adott paraméterről. A rekordoknak az eljárás foglalja le a memóriát, amit aztán a FreeProcParams eljárással tudunk felszabadítani, ha már nem lesz rá szükség.
A LoadParamsList eljárással a listát átmásolhatjuk egy TParams objektumba, ami a paraméterek kezelésére elsődlegesen használt osztály.
GetTableNames
Az eljárás lekérdezi egy TStrings osztályból származtatott objektumba az adatbázis tábláinak neveit. A második paraméterben egy logikai értékkel szabályozhatjuk, hogy a rendszer-, vagy az adattáblák kerüljenek-e be a listába. Ha a paraméter értéke igaz, akkor csak a rendszer-, ellenkező esetben csak az adattáblák kerülnek a listába.
LoadParamsFromIniFile
Beállítja a DriverName és Params property-k értékét a ConnectionName property értékének megfelelően. Ez utóbbi értékét a dbxconnections.ini fájlból veszi amennyiben nem adunk meg paraméterként más fájlnevet. Ha megadjuk a fájl nevét, akkor azt teljes elérési útvonallal kell megtennünk, továbbá ügyelni kell arra, hogy a fájl szerkezete megegyezzen a dbxconnections.ini fájl szerkezetével. Legegyszerűbb az eredeti fájlról egy másolatot készíteni, majd ebben a szükséges módosításokat elvégezni.
Az eljárás használata általában nem szükséges, mivel ezek az adatok szerkesztési időben megadhatók, és azok a Form-al együtt tárolásra is kerülnek. Ha viszont szerkesztési- és futási időben különböző beállításokat szeretnénk használni, akkor erre ez az eljárás ad lehetőséget.
Rollback
Egy tranzakció visszagörgetése. Ez annyit jelent, hogy a tranzakció indítása óta elvégzett műveletek nem lesznek véglegesítve, a tranzakció viszont befejeződik. Paraméterként meg kell adni a tranzakció azonosítóját.
SetTraceCallbackEvent
Az eljárással lehetőségünk van egy olyan eljárás megadására, ami minden, az adatbázis szerverrel történő kommunikáció során lefut. Ennek segítségével például naplózhatjuk a szerverrel történő kommunikációt.
Az eljárás első paramétere egy olyan függvény, amelynek a deklarációja megfelel a TSQLCallbackEvent típusnak.
TSQLCallbackEvent = function(CallType: TRACECat; CBInfo: Pointer): CBRType; stdcall;
A függvény első paramétere TRACECat, aminek csupán egyetlen értéke lehet: cbTRACE, ami azt jelenti, hogy a függvény minden egyes üzenetnél le fog futni, amit a komponens, vagy a szerver küld.
A második paraméter egy pointer egy SQLTRACEDesc rekordra. Ebben kapjuk meg az üzenet szövegét, típusát, és egyéb adatait.
A SetTraceCallbackEvent eljárás második paramétere egy tetszőlegesen megadható egész szám, melyet az SQLTraceDesc rekordban is meg fogunk kapni.
StartTransaction
Tranzakció indítása, amennyiben az adatbázis szerver támogatja ezt. Hogy támogatja-e, azt a TransactionsSupported property-ből tudhatjuk meg. Ha az adatbázis nem támogatja, akkor a StartTransaction eljárásnak nem lesz hatása.
A TransDesc egy TTransactionDesc típusú paraméter, amely többek között a tranzakció egyedi azonosítóját is tartalmazza. Az adatbázis szerver egyszerre több tranzakció kezdeményezését is támogathatja, ebben az esetben ezzel az egyedi azonosítóval határozhatjuk meg, hogy egy művelet (pl. lekérdezés) melyik tranzakcióhoz tartozik.
Ha a tranzakció el lett indítva, akkor az InTransaction property érték igazra vált. Ha a szerver nem támogat egyszerre több tranzakciót, akkor ennek a property-nek az értékét ellenőrizzük, mielőtt újabb tranzakciót kezdünk.
Close
Megszakítja a kapcsolatot az adatbázis szerverrel, de előtte még lezárja az összes aktív adatkészletet, ami ehhez a kapcsolathoz tartozott. Az eljárás ekvivalens azzal, mintha a Connected property-nek hamis értéket adnánk. A kapcsolat megszüntetése egyben a kapcsolat által lefoglalt erőforrások felszabadítását is jelenti.
A kapcsolat újbóli létrehozásakor a lezárt adatkészleteket is meg kell nyitni, ez nem történik meg automatikusan.
Open
Létrehozza a kapcsolatot az adatbázis szerverrel, és a Connected property értékét igazra állítja.
A TSQLConnection osztály az alábbi eseményekkel rendelkezik:
Az OnLogin esemény a BeforeConnect esemény után, és az AfterConnect esemény előtt fut le. Az AfterConnect a kapcsolat létrehozása, az AfterDisconnect pedig a kapcsolat megszüntetése után jön létre. A BeforeConnect a kapcsolat létrehozása, a BeforeDisconnect pedig a kapcsolat megszüntetése előtt következik be.

dbExpress paletta cikksorozat