使用C# 在MySQL 中處理參數化查詢時,確保參數名稱和值的正確性非常性重要避免異常。在這種情況下,新增第一個參數時會遇到 IndexOutOfBoundsException。
要解決此問題,請驗證查詢字串中的參數名稱與新增至 MySqlCommand 物件的參數是否相符。此外,請考慮以下事項:
在提供的程式碼中:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_@ = ?;";
您錯誤地使用了?查詢字串中的佔位符,MySQL 不支援。相反,MySQL 需要命名參數,該參數應以 @ 開頭。
將查詢字串替換為以下內容:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";
此外,使用AddWithValue 方法將參數加入指令物件:
m.Parameters.AddWithValue("@param_val_1", val1); m.Parameters.AddWithValue("@param_val_2", val2);
這確保參數名稱與中的佔位符符合查詢字串。
在修改後的程式碼中,使用 ExecuteScalar 而不是 ExecuteReader 來擷取等級值。這是因為查詢傳回單一值(層級),因此使用 ExecuteScalar 效率更高。
透過進行這些更改,您應該能夠執行參數化查詢而不會遇到任何異常。
以上是如何使用 C# 解決 MySQL 參數化查詢中的 IndexOutOfBoundsException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!