2012-05-03 33 views
1

我有一個SelectSQLQueryBuilder,其中有一個只讀文本框。用戶輸入數據並生成字符串!我必須檢查這個字符串是否是一個SQL語句。.Net中的任何類檢查給定的字符串是否是有效的SQL語句?

在SQL SERVER MGMT STUDIO中,執行的按鈕旁邊有一個按鈕,不會觸發該語句。 .NET中的任何類都可以這樣做?我怎樣才能驗證這個字符串!請幫忙!!

回答

2

如果您發送的聲明SQLSERVER這樣

set PARSEONLY ON 
your statement 

服務器將解析您的語句,但不執行它並返回任何錯誤。如果它通過,你會知道這是一個有效的聲明。

您不會知道它是否會真正運行,因爲某些類型的錯誤未被PARSEONLY檢測到。例如,那些SQL是有效的錯誤,但會導致數據轉換或約束違規等非法操作。

因此,儘管.Net中可能沒有類,但可以通過將set命令添加到sql來進行parseonly。我相信這是SQL Management Studio使用的功能。您可能會注意到,SQL管理Studio除非具有服務器連接,否則無法解析語句。

PARSEONLY是連接級別設置。所以如果你打開它,你需要再次關閉它,如果你真的想在該連接上執行SQL。

0

問題通常是解析SQL語句。事實證明,由於語言的複雜性以及衆多的變化,這是相當困難的。

存在一個很好的庫,它處理這些複雜性並分析SQL- http://sqlparser.com/

相關問題