Promotic

PmaAdo - Podrobný popis objektu

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:
1) SQL příkazy nevracející data v podobě objektu AdoRecordset: metodou DbExecute, například INSERT, UPDATE, DELETE, CREATE TABLE, atd.
2) SQL příkazy vracející data v podobě objektu AdoRecordset: metodou RsOpen, například SELECT, atd.


Každý dotaz vytvářející objekt AdoRecordset (RsOpen nebo DbExecute) může mít jednoznačný 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é 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.

Historie:
Pm8.01.00: Vytvořeno
© MICROSYS, spol. s r.o.