我有一段代碼,做這樣的事情:有沒有簡單的方法來檢查SQL語句是否會更新數據庫?
if (sqlStatement.WillUpdateDatabase)
DoThing1();
else
DoThing2();
目前WillUpdateDatabase
實現爲
public bool WillUpdateDatabase {
get { return statementText.StartsWith("SELECT"); }
}
這捕獲大多數情況下,但它可以與SELECT ... INTO ...
更加複雜。可能還需要考慮其他一些情況。
只是要清楚:這不是實現任何類型的安全。還有其他系統可以檢查SQL注入攻擊,這段代碼只需要做出是否執行thing1或thing2的選擇。
這似乎應該是一個解決的問題。有沒有行業標準的方法可靠地做到這一點?
更新/說明:類似UPDATE Table1 SET Column1 = 'a' WHERE 1 = 2
應該被視爲更新。
難道你不能'.Contains(「UPDATE」)'和'.Contains(「INSERT」)'? – EpicKip
@Jonny如果SQL包含一個'UPDATE'而不是'WHERE'子句,那麼沒有記錄會被更新。這算作'會更新數據庫'嗎? – mjwills
你不能預測它是否會更新一個值,直到它有效地嘗試它...所以,不,你不能真正檢查這個 –