【发布时间】:2016-03-04 01:32:05
【问题描述】:
我正在编写一个访问数据库服务的应用程序。应用程序应设计为与市场上的任何 RDBMS 完美配合。例如,MySQL、MS SQL Server、Firebird、SQLite、MS Access 或更多。它不应与特定的 RDBMS 相关联。
但是,字符串类型的 SQL 可能适用于某些 RDBMS,但不适用于其他 RDBMS。应该对 SQL 进行轻微的变体,以使其适用于特定的 RDBMS。这包括语法语法、数据类型、连接语法和DML (Data Manipulation Language, CREATE TABLE, CREATE INDEX and etc.)。
在一个应用程序中为不同的 RDBMS 提供不同版本的 SQL 并不是一件容易的事。
是否有某种现成的解决方案可以生成适合不同 RDBMS 的 SQL 查询?也许一些可以在运行时呈现 SQL 文本的库/类取决于 RDBMS 连接。
【问题讨论】:
-
支持的目的是可以使用
ORM或SQL query builder解决完全不同的方言。例如,sequelize.js或knex.js。 -
简单抽象数据库层(即接口)并为您想要支持的每种数据库类型进行实现。