【发布时间】:2012-04-18 12:57:36
【问题描述】:
我有一个应用程序,它使用几个不同的数据库来收集类似的信息。我通过一个 ODBC 接口来做到这一点,该接口有效地将我的持久层从我的应用程序层中抽象出来,并且效果很好。
事情是这样的:我想要比
更具体的查询SELECT * FROM [TableName]
据我所知,这适用于所有 ODBC 数据库,但是当您开始变得更加具体时,语法和语言的使用就会出现更多问题。在 MySQL 中有效的查询不一定在 MSSQL 中有效;在 Oracle 上运行良好的查询在 PostgreSQL 上运行良好。
但是 ODBC 是一个抽象层,所以我认为必须有一个所有兼容 ODBC 的数据库系统都支持的语言参考。如果我使用这些语言结构编写查询,我应该期望得到类似的结果,而不管数据库系统如何。
我说的对吗?有这样的标准吗?如果是这样,我在哪里可以找到语言参考,以便我可以相应地编写查询?我特别感兴趣的东西是这样的结构:
- 顶部(限制)
- MID (SUBSTR)
- 投射(转换)
等等。感谢您的帮助!
【问题讨论】:
-
我们有同样的情况,但从未找到任何可行的方法。我能做到的最接近的就是做基本的查询转储,然后让应用程序完成繁重的工作,这远非理想。一种替代方法是将查询放在单独的 XML 文件中,然后放在一组连接类中。然后,您可以调用查询和连接,如果您必须对查询进行更改,您可以在 xml 文件中进行更改,而无需重新编译。
-
LINQ-To-SQL/Entities 是一个选项吗?这是 LINQ 解决的类似问题:stackoverflow.com/questions/2938252/generic-sql-builder-net
-
不幸的是,高级构造是我的问题的一部分。我有一个不强制列约束的数据库系统,它会炸毁所有的处理程序。我正在探索一种通用方法来截断查询中的列长度,作为两部分过程的一部分;首先,获取查询结果的架构,然后使用内联列约束运行查询...即,如果列
foo是 varchar(15),我可以SELECT MID(foo, 1, 15) AS foo...不管我怎么看都很难看.叹息。