Можно ли создавать базы данных программно с использованием 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 конкретного сервера.