使用 C# 對 MySQL 進行參數化查詢
使用 SQL 查詢時,強烈建議使用參數化查詢。它們可以防止 SQL 注入攻擊,並透過消除連接字串值的需要來提高效能。
但是,當透過 C# 對 MySQL 使用參數化查詢時,確保正確設定程式碼非常重要。在新增第一個參數時可能出現的一個潛在錯誤是 IndexOutOfBoundsException。
問題:
在給定程式碼中:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_@ = ?;";
問題在於查詢字串,它使用問號(?)作為參數的佔位符。 MySQL 不辨識問號作為參數佔位符;它需要以「@」為前綴的命名參數。
解決方案:
要解決此問題,您需要修改查詢字串以使用命名參數並新增使用AddWithValue() 方法向MySqlCommand 物件傳遞參數:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";
public bool read(string id) { level = -1; MySqlCommand m = new MySqlCommand(readCommand); m.Parameters.AddWithValue("@param_val_1", val1); m.Parameters.AddWithValue("@param_val_2", val2); level = Convert.ToInt32(m.ExecuteScalar()); return true; }
透過使用命名參數和AddWithValue()方法,查詢將成功執行,不會遇到 IndexOutOfBoundsException。
以上是在 C# 中使用 MySQL 參數化查詢時如何避免 IndexOutOfBoundsException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!