昨天又有乙個新的需求:驗證文字框輸入的sql語法是否正確。
首先需要知道「set parseonly 」。
當 set parseonly 為 on 時,sql server 只分析語句。
當 set parseonly為 off 時,sql server 編譯並執行語句。
和 set parseonly 相關的還有set noexec on,
當 set noexec 為 on 時,sql server 將編譯每一條tran-sql語句但並不執行它們。
當 set noexec 為 off 時,sql server 編譯並執行語句。
現在我們就可以完成sql語法檢測的功能了。
下面是具體的**, 可以將其中的 parseonly 調整為 noexec
public static bool validatesql(stringsql)
catch(exception ex)
bresult= false;
loghelper.error("sql語法錯誤" +ex);
}finallyreturnbresult;
他們之間的一些區別:
1.set paraseonly 檢查每個tran-sql 的語法並返回錯誤訊息,不編譯和執行語句。
set noexec 編譯每個查詢但不執行查詢。
2.set paraseonly 的設定是在分析時設定,不是在執行或執行時設定。
set noexec 的設定在執行或執行時設定,不是在分析時設定。
本文**:
pb 判斷sql 是否合法 檢查SQL語句是否合法
昨天又有乙個新的需求 驗證文字框輸入的sql語法是否正確。首先需要知道 set parseonly 當 set parseonly 為 on 時,sql server 只分析語句。當 set parseonly為 off 時,sql server 編譯並執行語句。和 set parseonly 相關...
檢查SQL語句是否合法
昨天又有乙個新的需求 驗證文字框輸入的sql語法是否正確。首先需要知道 set parseonly 當 set parseonly 為 on 時,sql server 只分析語句。當 set parseonly 為 off 時,sql server 編譯並執行語句。和 set parseonly 相...
判斷操作是否合法A
time limit 1 sec memory limit 128 mb submit 44 solved 14 submit status web board 假設以i和o分別表示進棧和出棧操作,棧的初態和終態均為空,進棧和出棧的操作序列可表示為僅由i和o組成的序列。順序棧的定義為 typedef...