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