Можно ли создавать базы данных программно с использованием DBX?

Похоже, TSQLConnection подключается только к существующим базам данных, и я не смог найти другой компонент, который позволяет мне отправлять команды на сервер базы данных.

Я использую Delphi 2009 с Firebird и MSSQL.

Одна идея, которая пришла, состояла в том, чтобы подключиться к системной базе данных (например, master или tempdb в MSSQL) и затем отправить команды создания на сервер. Это может быть вариант для MSSQL, но я не уверен в Firebird.

Мне также известны новые метаданные DBX в Delphi 2009, но я не смог найти способ создания баз данных с их использованием. Все примеры, которые я нашел, это изменить существующие базы данных.

6 ответов

Да, ты можешь. dbExpress теперь включает в себя мощный набор классов метаданных для этого.

Стив Шонесси дает хорошее представление здесь.

Если вы используете драйверы Devart, вы можете подключиться без параметра databasename и отправить команду t-sql create database.

dbExpress, включенный в Delphi, использует стратегию "наименьшего общего знаменателя". Такая информация, как статистика запросов, доступная через собственные драйверы, невидима в dbExpress. (Может быть, мне следует задать вопрос типа "Какая функция в альтернативных реализациях dbExpress заставила вас переключиться?")

Вы можете выполнить "CREATE DATABASE ..." для обеих баз данных со стандартным TSQLQuery.

Обратите внимание, что синтаксис отличается между этими двумя. Поскольку dbx - легковесная библиотека lib, вероятно, что это действие, специфичное для SQL и DB, никогда не будет полностью поддерживаться. Это оставляет вас с SQL.

С Delphi 2007/2009 поставляется DBX4. Вы можете использовать низкоуровневые структуры для программного создания базы данных. Смотреть в dbxcommons.pas

Вы можете отправить скрипт "CREATE DATABASE" через любое соединение (ADO, OLEDB, ODBC и т. Д.), Открытое на любом сервере (или даже в файлах ms-access), если оно соответствует синтаксису DDL конкретного сервера.

Другие вопросы по тегам