Frage

Ich arbeite an einer Desktop -Anwendung, die (derzeit) MS Access und SQL Server zurück unterstützen muss. Die Anwendung befindet sich in ständiger Entwicklung und Änderungen werden häufig in der Datenbank vorgenommen, hauptsächlich die Hinzufügung von Tabellen und Ansichten zur Unterstützung neuer Funktionen (aber auch einige Tropfen und Änderungstabellen, um neue Spalten hinzuzufügen).

Ich habe ein System, das die DDL in die ausführbare Datei kompiliert, die Datenbank überprüft, um festzustellen, ob die ausführbare Datei über eine neue DDL verfügt, die ausgeführt werden muss, und es ausführt. Dies funktioniert gut für eine einzige Datenbank.

Mein unmittelbares Problem ist, dass SQL -Server und Zugriff auf wesentlich unterschiedliche Namen für Datentypen unterstützen. Eine Erstellung von Tabellenanweisungen, die gegen den Zugriff ausgeführt werden, wird nicht gegen SQL Server ausgeführt (oder schlechter wird eine Tabelle mit unterschiedlichen Datentypen erstellt).

Gibt es eine Methode, mit der DDL (insbesondere Tabellenbefehle erstellen) erstellt werden kann, die über ADO gegen beide Datenbanken ausgeführt werden können, ohne für jeden Anbieter separate DDL herstellen zu müssen?

War es hilfreich?

Lösung

Da Sie bereits ADO verwenden, sollten Sie sich untersuchen Microsoft Adox

Auf diese Weise können Sie Strukturen in einer Datenquelle unter Verwendung eines ADO -Objektmodells manipulieren, das unabhängig vom zugrunde liegenden Datenquellentyp ist. dh ohne auf explizite DDL zurückzugreifen

Die Unterstützung für ADOX wird von einem bestimmten Ado -Anbieter nicht garantiert, und der Grad der Adox -Unterstützung kann auch dann variieren, wenn er verfügbar ist. Aber für MS Access und MS SQL Server finden Sie alle Fähigkeiten, die Sie benötigen (und möglicherweise mehr!)

Andere Tipps

Dies kann mit DBX in Delphi erfolgen.

Im Folgenden finden Sie Links zu Beispielcode, die zeigen, wie dies erledigt werden kann.http://cc.embarcadero.com/item/26210

Ich hatte das gleiche Problem. Ich habe es bei der Anwendung eines C -Präprozessors auf die SQL gelöst, bevor ich ihn ausführte. Der Präprozessor umfasst Makros, um die verschiedenen DBs zu verarbeiten.

Stefano

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top