我被分配了一项任务,以获取制作 dll 的可行性,该 dll 需要一些输入,例如数据库名称(Mysql、access、sql、oracle 等)和更多输入来生成查询,并基于该 dll 应该返回应用程序的记录集。
这是个好主意吗?如果是,那么我应该考虑哪些输入?
我被分配了一项任务,以获取制作 dll 的可行性,该 dll 需要一些输入,例如数据库名称(Mysql、access、sql、oracle 等)和更多输入来生成查询,并基于该 dll 应该返回应用程序的记录集。
这是个好主意吗?如果是,那么我应该考虑哪些输入?
这是完全可行的,当您遇到不同的 SQL 语法时就会出现问题 - 看看 Hibernate 如何使用 Dialects 处理这个问题。
流行的数据库——Oracle、Sybase、MS SQL Server、MySQL——在它们允许的 SQL 语法上略有不同。基本上,供应商已经以不同的方式实现和扩展了 ANSI SQL。
我能想到的最简单的情况是,当您为列名分配假名的方式时,某些数据库需要这样:
SELECT x AS y FROM some_table
而其他人则要求:
SELECT x y FROM some_table
还有更多这样的例子,但最重要的是,当编写一个适用于所有数据库的查询抽象层时,您需要抽象 SQL 生成的概念,以便它可以针对您要支持的每个数据库进行定制(正如我所说, Hibernate 通过允许您指定特定于您正在使用的数据库的方言来做到这一点)。