Domanda

mi è stato dato un incarico per ottenere la fattibilità per la realizzazione di una dll che prende alcuni input come ad esempio il nome del database (MySQL, Access, SQL, Oracle, ecc) e alcuni più ingressi per generare una query, e sulla base che il dll dovrebbe restituire un set di record per l'applicazione.

E 'una buona idea? Se sì, allora cosa dovrei prendere in considerazione gli ingressi?

È stato utile?

Soluzione

E 'completamente fattibile, i problemi sorgono quando si incontrano diverse grammatiche SQL - dare un'occhiata a come Hibernate gestisce questo con l'uso di dialetti

.

I database popolari - Oracle, Sybase, MS SQL Server, MySQL - hanno lievi differenze nella grammatica SQL permettono. Essentually i venditori hanno implementato ed esteso ANSI SQL in modi diversi.

Il caso più semplice mi viene in mente è quando il modo in cui si assegna pseudonimi per i nomi delle colonne, alcuni database richiedono questo:

SELECT x AS y FROM some_table

, mentre altri richiedono:

SELECT x y FROM some_table 

Ci sono molti altri esempi, ma la linea di fondo è che quando si scrive un livello di astrazione query che funziona in tutti i database è necessario astrarre il concetto di generazione SQL in modo che possa essere adattata a ogni database che si sta per sostenere ( come ho detto, Hibernate fa questo consentendo di specificare un dialetto specifico per il database che si sta utilizzando).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top