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.
![](/file/23413/Chip_2002-07_cd1.bin/chplus/cpp/4/PreviousArrow.gif) ![](/file/23413/Chip_2002-07_cd1.bin/chplus/cpp/4/NextArrow.gif) ![](/file/23413/Chip_2002-07_cd1.bin/chplus/cpp/4/WayUpArrow.gif) |
13. Seznßmenφ s datov²mi mno╛inami
podporujφcφmi BDE
|