2011/09/01

General SQL Parser for VCL 簡介

最近這一陣子大量在Delphi存取MS SQL,對於SQL指令的解析及輸入的繁瑣實在是頭痛。

比方說:
SELECT a.name,
       b.id,
       c.class
FROM   a
       JOIN b
         ON a.name = b.name
            AND a.money > 100
       JOIN c
         ON c.x > a.y
WHERE  a.address NOT IN (SELECT *
                         FROM   xtable
                                JOIN ytable
                                  ON xtable.id <> ytable.id



這樣的語法,如果要輸入到Delphi裡,對coding人員來說,一定是場惡夢,更不要說那些複雜到見鬼的SQL指令了,所以我們常會這樣打:

str := 'SELECT A.NAME, B.ID, C.CLASS FROM A JOIN B ON A.NAME = B.NAME AND A.MONEY > 100 JOIN C ON C.X > A.Y WHERE A.ADDRESS NOT IN (SELECT * FROM XTABLE JOIN YTABLE ON XTABLE.ID <> YTABLE.ID'

中間完全不間斷………

要不就是認命地自己斷行,結果中間多打或少打一個字,也得等到執行時期才抓得到錯誤…

這時候就會覺得JQuery或LINQ真是好物啊!

在這邊介紹一個好物:General SQL Parser VCL Version

它算是一個外掛的CLASS,利用USES的方式引入到專案中即可使用
目前還在深入摸索中,所以我們先借用它內附的DEMO吧!
咦!出錯了!
上面的畫面可以看到我們KEY入的SQL有錯誤,也很明白的指出是缺少了「)」

這時我們再補上後執行,就會出現正確的結果了
正解!
當然,不會只是滿足於現有的Check syntax,所以我們還可以使用pretty print!
不只是單純的Memo,還可以搭配Rich Text
另外,還可以編成各語言的傳入字串:
剛剛的一行SQL轉成Delphi String型態,超方便!

但是這套工具價值不斐

Enterprise Version: $449.95
(全部Database都適用)
Professional Version: $149.95
(每個Database版本要各別買)

但如果工作內容常會接觸到SQL語言,那麼這套工具對你來說絕對是有極大的幫助啊!












啾咪!

沒有留言:

張貼留言