首页 文章

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

提问于
浏览
4

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

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

我当前的问题是SQL Server和Access支持数据类型的完全不同的名称,因此针对Access执行的CREATE TABLE语句将不会针对SQL Server执行(或者更糟糕的是,将执行但创建具有不同数据类型的表) .

是否有一种方法可用于创建DDL(尤其是CREATE TABLE命令),可以通过ADO对这两个数据库执行而无需为每个提供程序创建单独的DDL?

4 回答

  • 3

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

    这允许您使用独立于基础数据源类型的ADO对象模型来操纵数据源中的结构 . 即不诉诸明确的DDL

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

  • 0

    这可以使用Delphi中的DBX完成 .

    以下是示例代码的链接,显示了如何完成此操作 . http://cc.embarcadero.com/item/26210

  • 1

    我有同样的问题 . 我解决了它在执行之前将SQL前处理程序应用于SQL . 预处理器包括宏以处理不同的dbs .

    斯特凡诺

相关问题