Совместимый DDL (создать таблицу) в различных базах данных SQL?

StackOverflow https://stackoverflow.com/questions/4727799

Вопрос

Я работаю над настольным приложением, которое должно поддерживать (в настоящее время) MS Access и SQL Server заканчивается. Приложение находится в постоянной разработке, и часто вносятся изменения в базу данных, в основном добавление таблиц и представлений для поддержки новых функций (но также некоторые падения и изменение таблиц для добавления новых столбцов).

У меня есть система, которая компилирует DDL в исполняемый файл, проверяет базу данных, чтобы увидеть, есть ли у исполняемого нового DDL, который должен быть выполнен, и выполняет ее. Это прекрасно работает для одной базы данных.

Моя непосредственная проблема заключается в том, что SQL Server и Access Support Difly Lifful Lifful Tipes для типов данных, поэтому оператор Create Table, который выполняется против доступа, не будет выполняться против SQL Server (или, что еще хуже, будет выполняться, но создаст таблицу с различными данными данных).

Существует ли метод, который можно использовать для создания DDL (особенно создания табличных команд), который может быть выполнен через ADO против обеих этих баз данных без необходимости создавать отдельный DDL для каждого поставщика?

Это было полезно?

Решение

Поскольку вы уже используете Ado, вы должны изучить Microsoft Adox

Это позволяет вам манипулировать структурами в источнике данных, используя объектную модель ADO, которая не зависит от основного типа источника данных. т.е. не прибегая к явному DDL

Поддержка ADOX не гарантируется каким -либо данным поставщиком ADO, и уровень поддержки ADOX может варьироваться, даже если он доступен. Но для MS Access и MS SQL Server, я думаю, вы найдете все возможности, которые вам нужны (и, возможно, больше!)

Другие советы

Это можно сделать с помощью DBX в Delphi.

Ниже приведены ссылки на пример кода, показывающий, как это можно сделать.http://cc.embarcadero.com/item/26210

У меня такая же проблема. Я решил, что он применил предварительную категорию C к SQL, прежде чем его выполнить. Препроцессор включает в себя макросы для обработки различных DBS.

Стефано

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top