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