Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Preto je potrebný predkompilátor pre zabudované prístupy, ale nie pre JDBC:
* Integrácia a kompilácia kódu: Vstavané príkazy SQL a SQLJ nie sú chápané štandardnými kompilátormi C, COBOL alebo Java. Úlohou predkompilátora je:
* analyzujte sql: Analyzuje vložené príkazy SQL, kontroluje syntax a overuje interakcie databázy.
* Generujte kód jazyka hostiteľa: Prekladá tieto príkazy SQL do volaní do API ovládača databázy (alebo ekvivalentné mechanizmy prístupu k databáze na nízkej úrovni). Tým sa generuje kód jazyka hostiteľského jazyka, ktorý interaguje s databázou, manipulačným pripojením, vykonaním dotazov a získavaním výsledkov.
* Kombinujte s kódom jazyka hostiteľa: Predkompilátor prepláva tento vygenerovaný kód späť do zdrojového kódu hostiteľského programu a vytvorí kompletný program pripravený na štandardnú kompiláciu.
* Mapovanie typu údajov: Predkompilátor spracováva mapovanie medzi typmi údajov hostiteľského jazyka a typmi údajov databázy. Je to rozhodujúce, pretože hostiteľský jazyk a databáza môžu používať rôzne reprezentácie pre čísla, reťazce, dátumy atď.
* Dynamická manipulácia s SQL: Ak vstavaný SQL používa dynamický SQL (príkazy SQL vytvorené za behu), predkompilátor musí vygenerovať vhodný kód na zvládnutie konštrukcie a vykonávania týchto dynamicky generovaných dotazov.
JDBC iný prístup:
JDBC používa úplne inú architektúru. Vyhlásenia SQL sa považujú za reťazce v rámci kódu Java. Ovládač JDBC sa zaoberá prekladom a vykonaním týchto reťazcov. Nie je potrebná žiadna predkompilácia, pretože:
* Runtime Repracy: SQL sa odosiela do databázy *za runtime *. Vodič JDBC sa stará o analýzu a vykonávanie príkazov SQL.
* String SQL: SQL sa odovzdáva ako reťazec; Kompilátor Java nepotrebuje osobitné znalosti syntaxe SQL.
* Zodpovednosť vodiča: Vodič je zodpovedný za všetku komunikáciu s databázou vrátane mapovania typu a spracovania chýb.
V podstate vložené SQL a SQLJ vyžadujú, aby predkompilátory preklenuli priepasť medzi hostiteľským jazykom a databázou v čase kompilácie, zatiaľ čo JDBC zvláda toto premostenie za behu pomocou ovládača. Vďaka tomu je JDBC flexibilnejšia a prenosnejšia, ale potenciálne menej efektívnejšia v niektorých prípadoch ako prísne integrovaný prístup vložených SQL a SQLJ.