首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨不同SQL数据库的兼容DDL (CREATE TABLE)?

跨不同SQL数据库的兼容DDL (CREATE TABLE)?
EN

Stack Overflow用户
提问于 2011-01-19 02:46:39
回答 4查看 800关注 0票数 4

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

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

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

有没有一种方法可以用来创建DDL (特别是create TABLE命令),可以通过ADO对这两个数据库执行,而不必为每个提供程序创建单独的DDL?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-19 03:53:00

既然您已经在使用ADO,那么您应该研究一下Microsoft ADOX

这使您可以使用独立于基础数据源类型的ADO对象模型来操作数据源中的结构。也就是说,不使用显式DDL

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

票数 3
EN

Stack Overflow用户

发布于 2011-01-19 04:34:04

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

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

票数 3
EN

Stack Overflow用户

发布于 2011-01-19 04:02:42

我也有同样的问题。我解决了这个问题,在执行SQL之前对它应用C预处理器。预处理器包括宏,以便处理不同的dbs。

斯特凡诺

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4727799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档