C#代碼驗證sql語句是否正確(只驗證不執行sql)的方法


轉自 :http://www.jquerycn.cn/a_15010

為大家介紹如何用C#驗證sql語句的正確性,就像sql查詢分析器中的檢測代碼功能一樣,有需要的朋友,可以參考下。

需要用到如下的知識:
SET PARSEONLY
檢查每個 Transact-SQL 語句的語法並返回任何錯誤消息,但不編譯和執行語句。
SET PARSEONLY { ON | OFF }
當 SET PARSEONLY 為 ON 時,SQL Server 只分析語句。當 SET PARSEONLY 為 OFF 時,SQL Server 編譯並執行語句。
SET PARSEONLY 的設置是在分析時設置,而不是在執行或運行時設置。
在存儲過程或觸發器中不要使用 PARSEONLY。如果 OFFSETS 選項為 ON 而且沒有出現錯誤,則 SET PARSEONLY 返回偏移量。
SET NOEXEC (Transact-SQL)
編譯每個查詢但不執行查詢。
SET NOEXEC { ON | OFF }
當 SET NOEXEC 為 ON 時,SQL Server 將編譯每一批處理 Transact-SQL 語句但並不執行它們。當 SET NOEXEC 設置為 OFF 時,所有批處理將在編譯后執行。
SQL Server 中的語句執行包含兩個階段:編譯和執行。
該設置可用於讓 SQL Server 在執行 Transact-SQL 代碼時,驗證代碼中的語法和對象名。
也可以用於調試通常是較大的批處理中的部分語句。

SET NOEXEC 設置是在執行或運行時設置,而不是在分析時設置。
SET PARSEONLY的代碼如下:

public bool ValidateSQL(string sql) 
{ 
bool bResult; 

SqlCommand cmd = _conn.CreateCommand(); 
cmd.CommandText = "SET PARSEONLY ON"; 
cmd.ExecuteNonQuery(); 
try 
{ 
cmd.CommandText = sql; 
cmd.ExecuteNonQuery(); 
bResult = true; 
} 
catch (Exception ex) 
{ 
bResult = false; 
} 
finally 
{ 
cmd.CommandText = "SET PARSEONLY OFF"; 
cmd.ExecuteNonQuery(); 
} 

return bResult; 
}

有興趣的朋友,可以親自測試下,看看效果如何?!
可以把以上代碼寫成類中的方法,以后每次執行時都提前驗證下,是不是很酷哦。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM