[英]MySql Exception by Selecting Auto_Increment Values C#
我想获取用户名和用户名,但是当我执行命令时,出现异常:
索引超出范围。 必须为非负数,并且小于集合的大小。\\ r \\ n参数名称:startIndex“
该数据库具有以下各项: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){
在“ ExecuteReader”处引发异常。
队列
正在执行“从用户ID = '42'的用户中选择*”,而服务器上没有任何问题。
我的问题是:
为什么我的索引超出范围异常?
编辑:
我也只尝试查询
选择*从用户其中
User
但是我也有同样的例外。
我可以插入表中,也可以获取最后插入ID,但是当我尝试使用Select * From XY对每个数据库进行操作时,会得到相同的异常。 所有表都带有innobDB,并且所有表至少具有1个主键或外键。
编辑2:
如果仅选择用户名,则查询有效:
从用户中选择用户名
但是当我尝试获取用户ID时
从用户中选择用户ID
我得到异常:
{“目标数组不足以复制集合中的所有项目。检查数组索引和长度。”} System.Exception {System.ArgumentException}
尝试42不加引号
"SELECT * FROM User Where UserID = 42"
也许您对代码的这种编辑可以为您提供帮助。
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
}
希望您能明白。
作为明智的错误发现程序,我建议检查错误是否位于sql级别。
尝试简单地执行普通查询来摆脱where子句
SELECT * FROM `User`
你注意到一些变化吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.