我正在开发一个必须支持(当前)MS Access和SQL Server后端的桌面应用程序 . 应用程序在不断开发中,并且经常对数据库进行更改,主要是添加表和视图以支持新功能(还有一些DROP和ALTER TABLE来添加新列) .
我有一个系统将DDL编译成可执行文件,检查数据库以查看可执行文件是否有任何必须执行的新DDL并执行它 . 这适用于单个数据库 .
我当前的问题是SQL Server和Access支持数据类型的完全不同的名称,因此针对Access执行的CREATE TABLE语句将不会针对SQL Server执行(或者更糟糕的是,将执行但创建具有不同数据类型的表) .
是否有一种方法可用于创建DDL(尤其是CREATE TABLE命令),可以通过ADO对这两个数据库执行而无需为每个提供程序创建单独的DDL?
4 回答
由于您已经在使用ADO,因此您应该查看Microsoft ADOX
这允许您使用独立于基础数据源类型的ADO对象模型来操纵数据源中的结构 . 即不诉诸明确的DDL
任何给定的ADO提供商都不保证对ADOX的支持,即使ADOX支持可用,ADOX支持的级别也可能不同 . 但对于MS Access和MS SQL Server,我认为您将找到所需的所有功能(并且可能更多!)
这可以使用Delphi中的DBX完成 .
以下是示例代码的链接,显示了如何完成此操作 . http://cc.embarcadero.com/item/26210
我有同样的问题 . 我解决了它在执行之前将SQL前处理程序应用于SQL . 预处理器包括宏以处理不同的dbs .
斯特凡诺
你检查过了吗
http://db.apache.org/ddlutils/
要么
http://publib.boulder.ibm.com/infocenter/wtelecom/v6r1/index.jsp?topic=%2Fcom.ibm.twss.plan.doc%2Fdb_scripts.html