4

我正在开发一个必须支持(当前)MS Access 和 SQL Server 后端的桌面应用程序。该应用程序正在不断开发中,并且经常对数据库进行更改,主要是添加表和视图以支持新功能(还有一些 DROP 和 ALTER TABLE 以添加新列)。

我有一个将 DDL 编译成可执行文件的系统,检查数据库以查看可执行文件是否有任何必须执行的新 DDL,然后执行它。这适用于单个数据库。

我的直接问题是 SQL Server 和 Access 支持非常不同的数据类型名称,因此针对 Access 执行的 CREATE TABLE 语句不会针对 SQL Server 执行(或更糟的是,将执行但创建具有不同数据类型的表)。

有没有一种方法可以用来创建可以通过 ADO 对这两个数据库执行的 DDL(尤其是 CREATE TABLE 命令),而不必为每个提供者制作单独的 DDL?

4

4 回答 4

3

由于您已经在使用 ADO,因此您应该查看Microsoft ADOX

这允许您使用独立于基础数据源类型的 ADO 对象模型来操作数据源中的结构。即不诉诸显式 DDL

任何给定的 ADO 提供程序都不保证对 ADOX 的支持,即使 ADOX 支持可用,它的支持级别也可能会有所不同。但是对于 MS Access 和 MS SQL Server,我认为您会找到所需的所有功能(而且很可能更多!)

于 2011-01-18T19:53:00.143 回答
3

这可以使用 Delphi 中的 DBX 来完成。

以下是示例代码的链接,展示了如何做到这一点。 http://cc.embarcadero.com/item/26210

于 2011-01-18T20:34:03.893 回答
1

我有同样的问题。我解决了它在执行之前将 C 预处理器应用于 SQL。预处理器包含宏以处理不同的数据库。

斯特凡诺

于 2011-01-18T20:02:42.290 回答