昨天又有乙個新的需求:驗證文字框輸入的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
publicstatic
bool validatesql(string
sql)
catch
(exception ex)
finally
} }
return
bresult;
}
他們之間的一些區別:
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 相關...
pb 判斷sql 是否合法 檢查SQL語句是否合法
昨天又有乙個新的需求 驗證文字框輸入的sql語法是否正確。首先需要知道 set parseonly 當 set parseonly 為 on 時,sql server 只分析語句。當 set parseonly為 off 時,sql server 編譯並執行語句。和 set parseonly 相關...
判斷sql 是否合法 SQL 語句的內部處理邏輯
mysql 的基本架構示意圖如下 連線管理是 sql 語句執行過程中碰到的第一關,鏈結管理就像一扇大門一樣,控制著客戶端與 server 服務端的互動,連線管理主要工作是客戶端的身份認證和連線線程的管理。每個客戶端與 server 建立連線時,服務端都會建立乙個執行緒來與客戶端進行互動,互動的第一項...