Tato kapitola popisuje společné služby komponent datových
množin, které používají BDE pro přístup k datům. Podpora BDE je zabudována
do komponenty
TBDEDataSet, která je přímým potomkem TDataSet.
Další služby řízení databáze a sezení jsou přidány v TDBDataSet,
který je přímým potomkem TBDEDataSet.
Tato kapitola nás seznámí se službami datových množin poskytnutých
TBDEDataSet
a TDBDataSet. Předpokládáme při tom, že jsme se již seznámili s
TDataSet.
I když funkčnost poskytnutou TBDEDataSet a TDBDataSet musíme
pochopit, abychom mohli vyvíjet své vlastní datové množiny podporující
BDE, nikdy TBDEDataSet a TDBDataSet nepoužíváme ve svých
aplikacích přímo. Přímo používáme jejích přímé potomky TQuery, TStoredProc
a TTable.
Úvod do podpory BDE
Komponenta TBDEDataSet implementuje abstraktní metody
TDataSet,
které řídí navigaci záznamů, indexaci a záložkování. Je také reimplementováno
mnoho virtuálních metod a událostí TDataSet k převzetí výhod BDE.
Přidávané specifické služby BDE, společné pro všechny
databáze, v TBDEDataSet zavádějí nové vlastnosti, události a metody
pro zpracování BLOB, odložených aktualizací, komunikací se vzdáleným databázovým
serverem. TDBDataSet zavádí metodu a vlastnosti pro zpracování databázových
připojení a přiřazování datových množin k sezení BDE. Následující body
popisují tyto služby:
Zpracování připojení
databáze a sezení
Komponenta TDBDataSet zavádí následující vlastnosti
a funkce pro práci s připojením databáze a sezení.
Funkce nebo vlastnost |
Význam |
Funkce CheckOpen |
Určuje zda databáze je otevřená. Vrací true, pokud
připojení je aktivní a false v opačném případě. |
Database |
Identifikuje komponentu databáze, ke které je přiřazená
datová množina. |
DBHandle |
Specifikuje madlo databáze BDE pro komponentu databáze
specifikované ve vlastnosti Database. Používáme pouze tehdy, když
přímo voláme API BDE. |
DBLocale |
Specifikuje informace o místě BDE pro komponentu databáze
specifikované ve vlastnosti Database. Používáme pouze tehdy, když
přímo voláme API BDE. |
DBSession |
Specifikuje madlo sezení BDE pro komponentu sezení specifikovanou
vlastností
SessionName. Používáme pouze tehdy, když přímo voláme
API BDE. |
DatabaseName |
Specifikuje přezdívku BDE nebo jméno komponenty databáze
pro databázi použitou touto datovou množinou. Pokud datovou množinou je
tabulka Paradoxu nebo dBASE, pak DatabaseName může být úplná specifikace
souboru tabulky. |
SessionName |
Specifikuje sezení ke kterému tato komponenta datové
množiny je přiřazena. Pokud použijeme komponentu databáze i komponentu
sezení s datovou množinou, pak nastavení SessionName musí být stejné
jako vlastnost SessionName komponenty databáze. |
Z vlastností databáze a sezení TDBDataSet nejčastěji
se používá DatabaseName a SessionName. Pokud pracujeme s
databázemi na vzdáleném databázovém serveru, jako je Sybase, Oracle nebo
InterBase, pak naše aplikace obvykle udržuje toto připojení prostřednictvím
komponenty
TDatabase. Pak nastavíme vlastnost DatabaseName
každé datové množiny na jméno komponenty databáze, která zřizuje databázové
připojení používané datovými množinami. Pokud komponentu databáze nepoužijeme,
pak
DatabaseName musíme nastavit na přezdívku BDE (případně úplnou
specifikaci souboru pro dBASE nebo Paradox).
SessionName indikuje sezení BDE ke kterému je
přiřazena datová množina. Pokud ve své aplikaci nepoužíváme explicitní
komponenty sezení, pak pro tuto vlastnost nezadáváme hodnotu. Pokud naše
aplikace používá více než jedno sezení, pak nastavíme vlastnost SessionName
datové množiny na hodnotu SessionName příslušné komponenty sezení
v naši aplikaci. Pokud naše aplikace používá více komponent sezení a jednu
nebo více komponent databáze, pak SessionName datové množiny musí
odpovídat vlastnosti SessionName komponenty databáze ke které je
datová množina přiřazena.
Pokud nám nevyhovuje zabudovaná funkčnost BDE v komponentách
datových množin, pak můžeme přímo volat API BDE. K tomu používáme vlastnosti
DBHandle,
DBLocale
a DBSession. Tyto vlastnosti jsou určeny pouze pro čtení a jejich
hodnoty jsou automaticky přiřazeny, když datová množina je připojena k
databázovému serveru prostřednictvím BDE. Tyto vlastnosti jsou poskytnuty
jako zdroje pro vývojáře aplikací kteří potřebují volat funkce BDE přebírající
madla jako parametry. Více informací o API BDE bude uvedeno v následující
kapitole.
Práce s komponentou poskytovatele
Pro komponenty datových množin, které jsou částí aplikačního
serveru ve vícevrstvové databázové aplikaci, TDBDataSet obsahuje
vlastnost Proveder.
Provider je vlastnost určená pouze pro
čtení, která ukazuje na rozhraní
IProvider použité klientskou aplikací
ke komunikaci s datovými množinami na aplikačním serveru. Když komponenta
poskytovatele specifikuje datovou množinu na aplikačním serveru ze kterého
jsou požadována data a na který jsou zasílány klientské aktualizace, pak
vlastnost Provider datové množiny je automaticky nastavena na rozhraní
IProvider
poskytovatele. Komponenty poskytovatele jsou poskytnuty pouze ve verzi
Client/Server (TProvider) a Enterprise (TProvider a TEnteraProvider).
Práce s odloženými aktualizacemi
Odložené aktualizace umožňují získat data z databáze, uložit
a editovat je lokálně a potom aplikovat odložené aktualizace na databázi
jako celek. Když jsou povoleny odložené aktualizace, pak aktualizace datové
množiny (jako je zasílání změn nebo rušení záznamů) jsou ukládány v interní
vyrovnávací paměti místo přímého zápisu do připojené tabulky datové množiny.
Když změny jsou kompletní, pak naše aplikace volá metodu, která zapíše
odložené aktualizace do databáze a vyprázdní vyrovnávací paměť.
Odložené aktualizace jsou implementovány v TBDEDataSet.
Následující tabulka uvádí přehled vlastností, událostí a metod pro odložené
aktualizace.
Vlastnost, událost nebo metoda |
Význam |
Vlastnost CachedUpdates |
Určuje zda pro datovou množinu jsou povoleny odložené
aktualizace. Při true jsou odložené aktualizace povoleny. |
Vlastnost UpdateObject |
Indikuje jméno komponenty TUpdateSQL použité k
aktualizaci datových množin založených na dotazech. |
Vlastnost UpdatesPending |
Indikuje zda lokální vyrovnávací paměť obsahuje záznamy,
které je nutno aplikovat na databázi. true indikuje, že jsou záznamy
k aktualizaci. |
Vlastnost UpdateRecordTypes |
Indikuje typ aktualizovaných záznamů v průběhu odložených
aktualizací. |
Metoda UpdateStatus |
Indikuje, zda záznam je nezměněn, modifikován, vložen
nebo zrušen. |
Událost OnUpdateError |
Vývojářem vytvořená procedura, která zpracovává chyby
aktualizace záznam po záznamu. |
Událost OnUpdateRecord |
Vývojářem vytvořená procedura, která zpracovává aktualizace
záznam po záznamu. |
Metoda ApplyUpdates |
Aplikuje záznamy v lokální vyrovnávací paměti na databázi. |
Metoda CancelUpdates |
Odstraňuje všechny nevyřízené aktualizace z lokální vyrovnávací
paměti bez jejich aplikování na databázi. |
Metoda CommitUpdates |
Vyprazdňuje vyrovnávací paměť aktualizací po úspěšném
aplikování aktualizací. |
Metoda FetchAll |
Kopíruje všechny záznamy databáze do lokální vyrovnávací
paměti pro editování a aktualizování. |
Metoda RevertRecord |
Ruší aktualizace současného záznamu, pokud aktualizace
není aplikována na serverové straně. |
Používání odložených aktualizací a jejich koordinace s
ostatními aplikacemi, které přistupují k datům ve víceuživatelském prostředí,
bude popsána později.
Odkládání BLOB
TBDEDataSet poskytuje vlastnost CacheBlobs
k řízení zda položky BLOB jsou odkládány lokálně BDE, když aplikace čte
záznamy BLOB. Implicitně
CacheBlobs je true, což znamená,
že BDE ukládá lokální kopii položek BLOB. Odkládání BLOB zvyšuje výkonnost
aplikace umožněním BDE ukládat lokální kopie BLOB namísto jejího opakovaného
získávání z databázového serveru podle uživatelova procházení záznamy.
V aplikacích a prostředích kde BLOB jsou často aktualizovány
nebo nahrazovány a čerstvý pohled na data je důležitější než výkon aplikace,
můžeme nastavit
CacheBlobs na false k zajištění toho, aby
naše aplikace vždy viděla poslední verzi položky BLOB.
|
13. Seznámení s datovými množinami
podporujícími BDE
|