是否有任何框架可以将类似SQL的查询解析为其组件部分?

时间:2010-09-03 15:04:35

标签: sql text-parsing

我有兴趣为我使用的CMS编写类似SQL的查询语法。我们的想法是CMS查询可以用SQL-ish语法编写,我会将其转换为通过CMS API执行。

没有字段或表格选择,所以我需要一些方法来解决这个问题:

SELECT WHERE Something = 'something' AND (SomethingElse != 'something' OR AnotherThing == 'something')

基本上,我需要一些方法来根据括号和AND / OR来正确分组WHERE子句。

是否有一些框架可以做到这一点?什么时候完成的一些例子?我不想在这里重新发明轮子,我知道其他人必须在过去做过这个。

1 个答案:

答案 0 :(得分:1)

答案是肯定的,有许多框架可以用于模拟SQL并转换为SQL。 Linq和各种Linq翻译是一个很好的例子。准确了解您正在使用的CMS,以及您正在开发的语言和平台,将会有所帮助。一些支持代码查询的.NET ORM是:

NHibernate - 允许在字符串中使用名为HQL的SQL-ish语言,或使用表达式列表和Linq进行更多基于代码的查询构建。

Linq2SQL - 在它的出路,但对于你的简单应用程序,它应该没问题。该框架生成在表和域对象之间映射的DAO类,您可以使用编码的Linq查询来处理类,就像真正的表一样。

当然,您可以使用带有字符串SQL查询的好的'vanilla ADO.NET'。这有许多缺点,但如果你想在你的代码中有查询,为什么不把它们变成真正的SQL呢?如果要隐藏表结构,可以在提交查询之前转换表名,因此Web层(shudder)中包含的SQL不会针对您的数据库运行。