2013-03-27 5 views
4

Я хочу, чтобы проверить, действительно ли SQL, например.Проверка SQL в Delphi

select * from contacts where id = 42 

пройдет, но

select * from contacts where id 42 

потерпит неудачу

Кто-нибудь знает простой библиотеки SQL Validation - желательно бесплатно (или недорого)?

Я хочу сделать это как часть некоторого модульного тестирования, поэтому я хочу проверить, является ли сгенерированный SQL действительным, но не хочет его выполнять на сервере.

+2

Вы видели [необходимость в SQL-парсере на Delphi] (http://stackoverflow.com/questions/615608/need-in-sql-parser-on-delphi?rq=1), и это ответы? Кроме того, какая база данных? Различные СУБД используют разные синтаксисы, поэтому любой вайдератор/парсер должен знать, какую СУБД вы используете, чтобы знать, что действительно. –

+0

@KenWhite Базовый синтаксис SQL92 в порядке, не требует каких-либо расширений для конкретной СУБД – Alister

+1

Если вы работали над SQL Server и могли быть подключены при проверке запроса, вы можете использовать ['SET PARSEONLY'] (http://msdn.microsoft.com/en-us/library/ms178629.aspx). – TLama

ответ

1

Быстрый запрос Google для «delphi sql parser» возвращает this article при написании SQL-анализатора в Delphi, включая источник в ссылке внизу.

Парсер можно легко использовать в качестве валидатора; просто выбросьте сгенерированный вывод. Если он анализирует, он действителен. Если он ошибается, это не так.

+0

Этот анализатор выглядит так, как будто он может быть использован, однако он вызывает halt (1), если он сталкивается с ошибкой. Я надеялся не тратить много времени на это. Он также не будет компилироваться под XE3, поскольку он не поддерживает Unicode. – Alister