Viz: objekt
PmaAdo,
PmaAdo - Praktické příklady
Objekt
PmaAdo obsahuje jedno napojení k databázi (
ADO Connection). Připojení k databázi se provede metodou
DbOpen. Nad touto databází lze pak vykonávat:
Každý dotaz vytvářející objekt
AdoRecordset (
RsOpen nebo
DbExecute) může mít jednoznačný textový identifikátor (
sId), pod kterým si objekt
PmaAdo zapamatuje výsledek dotazu. Při použití jednoznačného identifikátoru lze získat existující objekt
AdoRecordset metodou
RsGet nebo ho lze zavřít metodou
RsClose. Objekt
PmaAdo může tedy obsahovat více výsledků SQL dotazů v podobě objektů
AdoRecordset současně.
Objekt Wrapper:
Způsob implementace metod a vlastností (např.
AdoRecordset.Update) u všech
ADO objektů (např.
AdoRecordset,
AdoField,
AdoRecord) způsobuje při chybě okamžité zastavení skriptu, který metodu zavolal. Toto je nežádoucí chování. Proto
PROMOTIC automaticky obalí každý objekt ADO vlastní bezpečnostní vrstvou (objekt Wrapper).
Wrapper umožňuje volat všechny vlastnosti a metody libovolného objektu, který
Wrapper obaluje.
Wrapper zajistí zachycení případné a chyby v původním objektu a zapamatuje si kód poslední chyby. Hlavně zabrání zastavení skriptu vlivem chyby volání metody objekt
ADO. Na objekt zabalený v bezpečnostní vrstvě objekt
Wrapper je nejlépe se dívat jako na původní objekt, protože vrstva zpřístupní veškeré vlastnosti a metody původního objektu. Navíc přidává vlastní vlastnosti určené k testování výsledku poslední operace nad objektem (úspěšná/neúspěšná).
Pokud některá metoda nebo vlastnost původního objektu vrací jiný objekt, pak to
Wrapper původního objektu zachytí a obalí nově vracený objekt novým vlastním objektem
Wrapper. Tak je zajištěno, že všechny objekty
ADO hierarchie jsou automaticky obaleny bezpečnostní vrstvou.
Vlastnosti přidané objektem
Wrapper k metodám a vlastnostem objekt
ADO (např.
AdoRecordset,
AdoField):
-
Pm_LastErr -
Vrací číselný kód chyby poslední provedené metody (vlastnosti) objektu (hodnota
0 znamená bez chyby).
-
Pm_LastTextErr -
Vrací textový popis chyby poslední provedené metody (vlastnosti) objektu.
Obdobně lze přímo v objektu
PmaAdo vyčíst výsledek poslední operace pro
DbExecute a
RsOpen vlastnostmi
LastErr a
LastTextErr.
Čtení výsledku poslední operace (nad objektem
PmaAdo,
AdoRecordset,
AdoField) je výhodné pokud nelze dopředu odhadnout (zaručit) výsledek operace a přitom vlastní metoda sama o sobě nevrací výsledek operace. Například
DbExecute,
RsOpen,
AdoRecordset.Update. Viz
Příklad.
Objekt ADO Record:
V závislosti na konkrétním
ADO Provider se může stát, že jednořádkový výsledek SQL dotazu nebude vrácen v podobě objektu
AdoRecordset s jedním záznamem, ale v podobě objektu
AdoRecord (představuje jeden řádek). Není to ale typické pro nejběžněji užívané
ADO Provider. Objekt
AdoRecord je spíše vrácen při explicitních operacích, kdy z existujícího objektu
AdoRecordset se vrátí konkrétní záznam v podobě objektu
AdoRecord. Objekt
AdoRecord se skládá z objektů
AdoField stejně jako objekt
AdoRecordset, na rozdíl od něj však nepodporuje metody pro přesun pozice aktuálního záznamu (např.
MoveFirst).
V dokumentaci PROMOTIC se pro zjednodušení bude uvádět pouze běžnější vracený objekt
AdoRecordset, přestože v určitých ojedinělých případech může být vrácen i objekt
AdoRecord.
Asynchronní programování:
Některé operace nad databází mohou být prováděny i asynchronně.
Upozornění: Asynchronní programování často přináší značnou komplikaci práce a proto je doporučován spíše synchronní přístup.
Pokud hrozí situace, že synchronní požadavky mohou trvat příliš dlouho nebo hrozí čekání na
timeout, pak je lepší provádět veškeré operace v pracovním vlákně (viz objekt
PmaSequencer").
Více o technologii
ADO viz
http://msdn.microsoft.com/en-us/library/ms679836(v=VS.85).aspx,
http://www.w3schools.com/asp/ado_intro.asp nebo
http://www.connectionstrings.com.