Ecco perché è necessario un precompilatore per gli approcci incorporati ma non per JDBC:
* Integrazione e compilazione del codice: Le istruzioni SQL e SQLJ incorporate non sono comprese dai compilatori standard C, Cobol o Java. Il compito del precompilatore è:
* analizza il SQL: Analizza le istruzioni SQL incorporate, controllando la sintassi e la convalida delle interazioni del database.
* Genera il codice linguistico host: Traduce tali istruzioni SQL in chiamate all'API del driver di database (o meccanismi di accesso al database di basso livello equivalenti). Ciò genera codice in lingua ospite che interagisce con il database, la gestione della connessione, l'esecuzione delle query e il recupero dei risultati.
* Combina con il codice linguistico host: Il precompilatore intreccia questo codice generato nel codice sorgente del programma host, creando un programma completo pronto per la compilation standard.
* Mappatura del tipo di dati: Il precompilatore gestisce la mappatura tra i tipi di dati della lingua host e i tipi di dati del database. Ciò è cruciale perché il linguaggio dell'host e il database potrebbero utilizzare rappresentazioni diverse per numeri, stringhe, date, ecc.
* Gestione dinamica SQL: Se SQL incorporato utilizza SQL dinamico (istruzioni SQL costruite in fase di esecuzione), il precompilatore deve generare codice appropriato per gestire la costruzione e l'esecuzione di queste query generate dinamicamente.
Approccio diverso di JDBC:
JDBC utilizza un'architettura completamente diversa. Le dichiarazioni SQL sono trattate come stringhe all'interno del codice Java. Il driver JDBC gestisce la traduzione e l'esecuzione di queste stringhe. Non è necessaria alcuna precompilazione perché:
* Esecuzione di runtime: L'SQL viene inviato al database *in fase di esecuzione *. Il driver JDBC si occupa dell'analisi e dell'esecuzione delle dichiarazioni SQL.
* SQL basato su stringa: SQL è passato come una stringa; Il compilatore Java non ha bisogno di una conoscenza speciale della sintassi SQL.
* Responsabilità del driver: Il driver è responsabile di tutte le comunicazioni con il database, inclusi la mappatura del tipo e la gestione degli errori.
In sostanza, SQL e SQLJ incorporati richiedono precompilatori per colmare il divario tra il linguaggio host e il database al momento della compilazione, mentre JDBC gestisce questo ponte in fase di esecuzione usando un driver. Ciò rende JDBC più flessibile e portatile ma potenzialmente meno efficiente in alcuni casi rispetto all'approccio strettamente integrato di SQL e SQLJ incorporati.
software © www.354353.com