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

Database 使DLL与所有数据库兼容是一个好主意吗,database,database-design,feasibility,Database,Database Design,Feasibility,我被分配了一个任务,以获得制作dll的可行性,该dll需要一些输入,例如数据库名称(Mysql、access、sql、oracle等)和一些其他输入来生成查询,并基于此dll应向应用程序返回一个记录集 这是个好主意吗?如果是,那么我应该考虑哪些输入呢? < P>这是完全可行的,当遇到不同的SQL语法时,问题就出现了——看看Hibernate如何使用方言处理这个问题。 流行的数据库——Oracle、Sybase、MS SQL Server、MySQL——在允许的SQL语法上略有不同。实际上,供应商

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


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

< P>这是完全可行的,当遇到不同的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通过允许您指定特定于所使用数据库的方言来实现这一点)。

这是完全可行的,当您遇到不同的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通过允许您指定特定于所使用数据库的方言来实现这一点).

谢谢你的回答,但我不太明白。你能解释得更详细一点吗?好的,谢谢你的解释。你能指导我如何使用hibernate吗?实际上,我发现它是用于dotnet的nhibernate。你能指导我吗?我想你的作业需要类似hibernate Criteria类的东西-你设置了在Hibernate内部生成SQL查询(使用适当的方言)并解析将每一行映射到一个对象的结果集。对于赋值,您只需生成查询并返回结果集-以最简单的形式,这只是字符串串联,您将组合变量(如表名和列名)以创建select语句(注意:Hibernate不是这样做的,这完全是另一回事)。谢谢你的回答,但我不太明白。你能解释得更详细一点吗。好的,谢谢你的解释。你能指导我如何使用hibernate吗?实际上,我发现它是用于dotnet的nhibernate。你能指导我吗?我想你的作业需要类似hibernate Criteria类的东西-你设置了并获取与这些属性匹配的对象的列表。在Hibernate内部生成SQL查询(使用适当的方言)并解析将每一行映射到一个对象的结果集。对于赋值,您只需生成查询并返回结果集-以最简单的形式,这只是字符串串联,您将组合变量(如表名和列名)以创建select语句(注意:Hibernate不是这样做的,这完全是另一回事)。