2008-12-30 17 views
6

Sieht so aus, als ob die TSQLConnection nur eine Verbindung zu vorhandenen Datenbanken herstellt, und ich konnte keine andere Komponente finden, mit der ich Befehle an den Datenbankserver senden kann.Ist es möglich, Datenbanken mithilfe von DBX programmgesteuert zu erstellen?

Ich benutze Delphi 2009 mit Firebird und MSSQL.

Eine Idee, die kam, war eine Verbindung zu einer Systemdatenbank (Master oder Tempdb in MSSQL zum Beispiel) und senden Sie dann erstellen Befehle an den Server. Dies könnte eine Option für MSSQL sein, aber ich bin mir nicht sicher für Firebird.

Ich bin mir auch der neuen DBX-Metadaten in Delphi 2009 bewusst, aber ich konnte keine Möglichkeit finden, Datenbanken damit zu erstellen. Alle Beispiele, die ich gefunden habe, sind bestehende Datenbanken zu ändern.

+0

Unabhängig davon, welches Framework Sie verwenden, können Sie eine Datenbank auf einem relationalen Datenbankserver erstellen, indem Sie DDL-Anweisungen im Klartext an diesen Server senden . Es funktioniert mit MSSQL, und es funktioniert auch mit Firebird –

+0

Siehe ähnliche Frage http://stackoverflow.com/questions/423808/creating-a-database-using-dbexpress-in-delphi – stukelly

Antwort

-2

Sie können "CREATE DATABASE ..." in beiden Datenbanken mit Standard TSQLQuery ausführen.

Beachten Sie, dass die Syntax zwischen diesen beiden unterscheidet. Da dbx eine Lightweight-Bibliothek ist, wird diese SQL- und DB-spezifische Aktion wahrscheinlich niemals vollständig unterstützt. Es hinterlässt Sie mit SQL.

+0

TSQLQuery-Datenbank erfordert eine verbundene TSQLConnection. –

+0

Ja. SQLServer: Stellen Sie eine Verbindung zur Master-Datenbank her, erstellen Sie Ihre neue Datenbank und stellen Sie eine Verbindung zu ihr her. – dmajkic

-3

Sie können ein "CREATE DATABASE" -Skript über eine beliebige Verbindung (ADO, OLEDB, ODBC usw.) senden, die auf einem beliebigen Server (oder sogar MS-Access-Dateien) geöffnet ist, solange es der spezifischen Server-DDL-Syntax folgt.

+0

Ich frage nach der Verwendung des DBX-Frameworks, nicht anderen. –

3

Ja, Sie können. dbExpress enthält jetzt einen leistungsstarken Satz von Metadatenklassen, um genau dies zu tun.

Steve Shaughnessy gibt eine gute Einführung here.

+1

Ich kenne die neuen DBX-Metadaten, aber es gibt keine Möglichkeit, Datenbanken damit zu erstellen. Zumindest kann ich nicht finden. Wenn Sie mir ein Beispiel geben könnten. Ich kann nur vorhandene Datenbanken ändern. –

-2

Mit Delphi 2007/2009 kommt DBX4. Sie können dort die Strukturen auf niedriger Ebene verwenden, um die Datenbank programmgesteuert zu erstellen. Suchen Sie in dbxcommons.pas

+0

Sie sprechen über DBX-Metadaten. Sehen Sie sich meinen Kommentar zu Nick Hodges an. –

0

Erick, wenn Sie Devart-Treiber verwenden, können Sie eine Verbindung ohne den Parameter database_name herstellen und den Befehl t-sql create database senden.

0

Der in Delphi enthaltene dbExpress verwendet eine Strategie des kleinsten gemeinsamen Nenners. Informationen wie Abfragestatistiken, die über native Treiber verfügbar sind, sind mit dbExpress nicht sichtbar. (Vielleicht sollte ich eine Frage stellen wie "Welche Funktion in alternativen dbExpress-Implementierungen haben Sie gewechselt?")