我想获取用户名和用户ID,但是当我执行命令时 我得到了例外:
指数超出范围。必须是非负数且小于集合的大小。\ r \ nParameter name:startIndex“
数据库具有Items:UserID(AutoIncrement Int(9)(PK))和UserName(Varchar(20))
代码:
using (MySqlConnection connection = new MySqlConnection(DBConnection.ConnectionString))
{
connection.Open();
MySqlCommand getUser = new MySqlCommand("SELECT * FROM User Where UserID = '42'", connection);
MySqlDataReader reader = getUser.ExecuteReader();
if (reader.HasRows){
Exception在“ExecuteReader”处抛出。
队列
“选择*来自UserID = '42'的用户”在服务器上执行没有任何问题。
我的问题是:
为什么我的索引超出范围异常?
修改
我也只尝试了查询
SELECT * FROM User
User
但我得到同样的例外。
我可以插入表中,我可以获得最后一个插入ID,但是当我尝试使用Select * From XY的每个数据库时,我得到相同的异常。所有表都使用innobDB,并且所有表都至少有1个主键或外键。
EDIT2:
如果我只选择查询正在运行的用户名:
从用户中选择用户名
但是当我尝试获取UserID
时从用户中选择用户ID
我得到了例外:
{“目标数组不足以复制集合中的所有项目。检查数组索引和长度。”} System.Exception {System.ArgumentException}
答案 0 :(得分:0)
尝试42不带引号
"SELECT * FROM User Where UserID = 42"
答案 1 :(得分:0)
也许这段代码编辑可以帮到你。
using (MySqlConnection connection = new MySqlConnection(DBConnection.ConnectionString))
{
connection.Open();
MySqlCommand getUser = new MySqlCommand("SELECT * FROM `User` WHERE `User`.`UserID` = 42", connection);
MySqlDataReader reader = getUser.ExecuteReader();
//rest of your code
}
我希望你明白这一点。
答案 2 :(得分:0)
作为明智的错误发现程序,我建议检查错误是否位于sql级别。
尝试摆脱简单执行普通查询的where子句
SELECT * FROM `User`
你注意到一些变化吗?