2013-03-27 19 views
4

我希望能夠檢查,如果SQL是有效例如SQL驗證在Delphi

select * from contacts where id = 42 

會通過,但

select * from contacts where id 42 

會失敗

有誰知道一個簡單的SQL驗證庫 - 最好是免費(或廉價)?

我想這樣做,因爲一些單元測試的一部分,所以我想檢查生成的SQL是有效的,但不希望執行它的服務器上。

+2

你看到[德爾福在SQL語法分析程序需要(http://stackoverflow.com/questions/615608/need-in-sql-parser-on-delphi?rq=1)和它的答案?另外,什麼數據庫?不同的DBMS使用不同的語法,所以任何vaidator/parser都需要知道你使用哪個DBMS來知道什麼是有效的。 – 2013-03-27 21:41:01

+0

@KenWhite基本SQL92語法是好的,不需要任何擴展爲特定的DBMS – Alister 2013-03-27 22:06:37

+1

如果您正在處理SQL Server上,將能夠在查詢驗證連接,您可以使用['SET PARSEONLY']( http://msdn.microsoft.com/en-us/library/ms178629.aspx)聲明。 – TLama 2013-03-28 07:31:55

回答

1

快速谷歌查詢「德爾福SQL分析器」關於在底部的鏈接在Delphi編寫SQL語法分析程序,包括源返回this article

解析器可以很容易地被用作驗證器;只是扔掉生成的輸出。如果解析,它是有效的。如果它出錯了,事實並非如此。

+0

這個解析器看起來可能可用,但是如果遇到錯誤,它會調用halt(1)。我希望不必花太多時間在這方面進行研究。它也不會在XE3下編譯,因爲它不支持Unicode。 – Alister 2013-03-27 22:11:32