使DLL与所有数据库兼容是一个好主意

时间:2009-06-06 07:10:01

标签: database database-design feasibility

我已经获得了一项任务,可以获得制作一个dll的可行性,该dll需要一些输入,例如数据库名称(Mysql,access,sql,oracle等)和一些输入来生成查询,并基于此dll应该将记录集返回给应用程序。

这是个好主意吗?如果是,那么我应该考虑哪些输入?

1 个答案:

答案 0 :(得分:4)

这是完全可行的,当您遇到不同的SQL语法时会出现问题 - 看看Hibernate如何使用方言处理这个问题。

流行的数据库 - Oracle,Sybase,MS SQL Server,MySQL--在它们允许的SQL语法上略有不同。几乎所有供应商都以不同的方式实现和扩展了ANSI SQL。

我能想到的最简单的情况是,当您为列名指定假名时,某些数据库需要这样:

SELECT x AS y FROM some_table

而其他人要求:

SELECT x y FROM some_table 

还有更多这样的例子,但最重要的是,在编写适用于所有数据库的查询抽象层时,您需要抽象SQL生成的概念,以便可以为您要支持的每个数据库量身定制(正如我所说,Hibernate通过允许您指定特定于您正在使用的数据库的方言来实现此目的。