Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Prečo je predkompilátor potrebný na preklad vložených SQL a SQLJ nie pre JDBC?

Vstavané SQL (ako v C alebo COBOL) a SQLJ (rozšírenie Java) vyžadujú predkompiléry, pretože priamo vkladajú príkazy SQL * do * zdrojového kódu hostiteľského jazyka. JDBC, na druhej strane, považuje SQL za údaje odovzdané do databázy; Nie je to prepletené so samotným kódom Java.

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.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené