2010-09-03 4 views
0

Я заинтересован в написании синтаксиса SQL-подобных запросов для CMS, с которым я работаю. Идея заключалась бы в том, что запрос CMS может быть написан в синтаксисе SQL-ish, и я бы преобразовал его для выполнения через CMS API.Есть ли какой-либо фреймворк для синтаксического анализа SQL-подобных запросов в его составных частях?

Там не будет никакого выбора поля или таблицы, так что мне нужно каким-то образом, чтобы получить от этого:

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

По существу, то, мне нужно каким-то образом получить WHERE положения сгруппированы правильно на основе их круглых скобках и AND/ОШ.

Есть ли рамки для этого? Какой пример, когда это было сделано? Я не хочу заново изобретать колесо здесь, и я знаю, что кто-то еще должен был это сделать в прошлом.

+1

Тогда я буду; этот сайт о помощи, а не ваше эго. – KeithS

+0

На каком языке это будет? У многих языков есть что-то вроде этого ... – StaxMan

ответ

1

Ответ: да, существует множество фреймворков, которые работают в аналоге SQL и преобразуются в SQL. Linq и различные переводчики Linq - яркий пример. Зная, с какой именно CMS вы работаете, и, следовательно, какой язык и платформа вы разрабатываете, было бы полезно. Некоторые .NET ORM, поддерживающие кодовые запросы:

NHibernate - позволяет использовать язык SQL-иш, называемый HQL, в строках, или более конструкцию запросов на основе кода с использованием списков выражений и Linq.

Linq2SQL - На выходе, но для ваших более простых применений это должно быть хорошо. Структура генерирует классы DAO, которые сопоставляют между таблицами и объектами домена, и вы можете использовать закодированные запросы Linq для работы с классами, очень похожими на реальные таблицы.

И, конечно, вы можете использовать хороший ol 'vanilla ADO.NET со строковым SQL-запросом. У этого есть многочисленные недостатки, но если вы хотите иметь запросы в своем коде, почему бы не сделать их реальными SQL? Если вы хотите скрыть структуру таблицы, вы можете перевести имена таблиц перед отправкой запросов, поэтому SQL, содержащийся на веб-уровне (содрогание), не будет работать против вашей базы данных.

+0

Но вот что - я не конвертирую в SQL. Я перехожу из синтаксиса SQL-ish к серии вызовов API. – Deane

 Смежные вопросы

  • Нет связанных вопросов^_^