檢查SQL語句是否合法

2022-02-07 01:06:55 字數 798 閱讀 9301

昨天又有乙個新的需求:驗證文字框輸入的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(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 建立連線時,服務端都會建立乙個執行緒來與客戶端進行互動,互動的第一項...