Domanda

Sto lavorando su un'applicazione desktop che deve supportare (attualmente) di MS Access e SQL Server back end. L'applicazione è in costante sviluppo e le modifiche sono spesso stati fatti alla base di dati, per lo più l'aggiunta di tabelle e viste per supportare le nuove funzionalità (ma anche qualche goccia e tabelle ALTER per aggiungere nuove colonne).

Ho un sistema che compila il DDL nell'eseguibile, controlla il database per vedere se l'eseguibile ha qualche nuovo DDL che deve essere eseguita, e l'esegue. Questo funziona bene per un singolo database.

Il mio problema immediato è che SQL Server e sostenere l'accesso molto diversi nomi per i tipi di dati in modo da un CREATE TABLE che esegue contro l'accesso non verranno eseguiti in SQL Server (o peggio, eseguirà ma creare una tabella con diversi tipi di dati).

Esiste un metodo che può essere utilizzato per creare DDL (soprattutto CREATE TABLE comandi) che può essere eseguito tramite ADO contro entrambi questi database, senza dover imbarcazioni DDL separato per ogni fornitore?

È stato utile?

Soluzione

Dal momento che si sta già utilizzando ADO, si dovrebbe guardare in Microsoft ADOX

Questo permette di manipolare strutture in un'origine dati utilizzando un modello di oggetti ADO che è indipendente dal tipo di dati sottostante. vale a dire senza ricorrere a DDL esplicito

Il supporto per ADOX non sia garantito da un determinato provider ADO, e il livello di supporto ADOX può variare anche quando è disponibile. Ma per MS Access e MS SQL Server penso che troverete tutte le funzionalità desiderata (e probabilmente più!)

Altri suggerimenti

Questo può essere fatto utilizzando DBX in Delphi.

Di seguito è collegamenti a mostrare il codice di esempio come questo può essere fatto. http://cc.embarcadero.com/item/26210

Ho avuto lo stesso problema. Decisi che l'applicazione di un preprocessore C a SQL prima di eseguirlo. Il preprocessore include le macro al fine di gestire le diverse DBS.

Stefano

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