首頁 >資料庫 >mysql教程 >在 C# 中使用 MySQL 參數化查詢時如何避免 IndexOutOfBoundsException?

在 C# 中使用 MySQL 參數化查詢時如何避免 IndexOutOfBoundsException?

Susan Sarandon
Susan Sarandon原創
2024-12-15 09:29:09845瀏覽

How to Avoid IndexOutOfBoundsException When Using Parameterized Queries with MySQL in C#?

使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn