2012-07-05 72 views
1

我有一些麻煩,用正則表達式(不知道我想要做的就是儘可能SQL正則表達式(sql); C#

方案

我有一個輸入區域,用戶可以寫一些文字。 當文本通過電子郵件發送給客戶時,他們希望能夠執行某些SQL查詢,然後將結果顯示在文本中。

粗糙例如:

我附上發票SQL(SELECT DocNumber FROM X WHERE DocEntry IN (SELECT DocEntry FROM X););

請提供發票付款。

問候

我有一些困難,處理這些用戶可以寫在SQL ();

有沒有人做過這樣的事情與正則表達式之前,或者我將不得不做一些醜陋的拆分,子字符串和C#中的最後一個索引?

任何意見/建議將不勝感激。

+1

如果你不能改變你的語法,你可以使用regexp來查找'SQL(...);'然後使用大括號匹配找到結尾。 (當你敲擊大括號時迭代通過加減,直到計數返回到零 – 2012-07-05 12:22:53

+2

如果有人鍵入'drop table X;'而不是? – Ben 2012-07-05 12:23:56

+0

@richard:謝謝你可能會工作 – user1029651 2012-07-05 12:29:56

回答

3

你真的不想這樣做。爲什麼不使用模板,因此您的用戶可以鍵入%%invoiceNo%%,您的代碼使用適當的查詢查找發票號?

+0

「You _really_ do not想要做到這一點「 – Ben 2012-07-05 12:23:04

+0

感謝您的評論 那麼系統有超過900個表格和很多字段,所以我爲他們創建模板將是很難的(即不可能)。我們已經有關鍵字提供了很多的信息,但用戶想要提供越來越多的專業領域,所以這(如果可能)將是一個很好的解決方案。 – user1029651 2012-07-05 12:27:40

+0

@ user1029651當然可以按照您的方式進行,正如richard在您的問題的評論中所建議的那樣。然而,你會在腳下拍攝自己,例如,當您對多個報告使用相同的查詢並且想要更改查詢時但不要隨處更改,這會導致不同的結果。您最好在將查詢鏈接到模板字段之間添加一個圖層,以便您可以輕鬆地重用查詢而不會混淆郵件模板。 – CodeCaster 2012-07-05 12:59:55