首頁 >資料庫 >mysql教程 >如何使用 C# 在 MySQL 中安全地執行參數化查詢?

如何使用 C# 在 MySQL 中安全地執行參數化查詢?

DDD
DDD原創
2024-12-14 02:26:11475瀏覽

How to Securely Execute Parameterized Queries in MySQL using C#?

使用 C# 在 MySQL 中進行參數化查詢

參數化查詢是資料庫程式設計的重要組成部分。它們允許您將 SQL 語句與查詢中使用的資料分開。這有助於防止 SQL 注入攻擊,並使您的程式碼更具可讀性和可維護性。

要在 C# 中使用參數化查詢,您需要建立一個 MySqlCommand 物件並向其新增參數。您可以使用 MySqlCommand 物件的Parameters 屬性來執行此操作。

以下程式碼顯示如何使用參數化查詢從 USERS 表中選擇資料的範例:

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_2 = ?;";

public bool read(string id)
{
    level = -1;
    MySqlCommand m = new MySqlCommand(readCommand);
    m.Parameters.Add(new MySqlParameter("", val1));
    m.Parameters.Add(new MySqlParameter("", val2));
    MySqlDataReader r = m.ExecuteReader();
    if (r.HasRows)
        level = Convert.ToInt32(r.GetValue(0).ToString());
    r.Close();
    return true;
}

This程式碼將編譯並執行,不會發生錯誤。但是,它不會傳回預期的結果。問題是 SQL 語句中的參數名稱與 MySqlCommand 物件中的參數名稱不符。

要解決此問題,需要變更 SQL 語句中的參數名稱以符合 MySqlCommand 物件中的參數名稱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;
}

此程式碼將編譯並運行,不會出現錯誤。它還會傳回預期的結果。

以上是如何使用 C# 在 MySQL 中安全地執行參數化查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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