我正在开发一个桌面应用程序,它必须支持(当前) MS Access和SQL Server后端。该应用程序正在不断开发中,并且经常对数据库进行更改,主要是添加表和视图以支持新特性(但也有一些删除和更改表以添加新列)。
我有一个系统,它将DDL编译成可执行文件,检查数据库以查看可执行文件是否有任何必须执行的新DDL,然后执行它。这对于单个数据库很好地工作。
我直接遇到的问题是,SQL Server和Access支持的数据类型名称截然不同,因此针对Access执行的CREATE TABLE语句将不会针对SQL Server执行(或者更糟糕的是,将执行而是创建具有不同数据类型的表)。
有没有一种方法可以用来创建DDL (特别是create TABLE命令),可以通过ADO对这两个数据库执行,而不必为每个提供程序创建单独的DDL?
发布于 2011-01-19 03:53:00
既然您已经在使用ADO,那么您应该研究一下Microsoft ADOX
这使您可以使用独立于基础数据源类型的ADO对象模型来操作数据源中的结构。也就是说,不使用显式DDL
任何给定的ADO提供程序都不保证对ADOX的支持,即使提供了ADOX支持,其级别也可能会有所不同。但是对于MS Access和MS SQL Server,我认为您会找到所需的所有功能(甚至更多!)
发布于 2011-01-19 04:34:04
这可以在Delphi中使用DBX来完成。
下面是示例代码的链接,展示了如何做到这一点。http://cc.embarcadero.com/item/26210
发布于 2011-01-19 04:02:42
我也有同样的问题。我解决了这个问题,在执行SQL之前对它应用C预处理器。预处理器包括宏,以便处理不同的dbs。
斯特凡诺
https://stackoverflow.com/questions/4727799
复制相似问题