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