C# 通过选择UserID(PK)在ExecuteReader上出现MySqlException

C# 通过选择UserID(PK)在ExecuteReader上出现MySqlException,c#,mysql,mysql-connector,C#,Mysql,Mysql Connector,我尝试从数据库中删除查询正在运行的phpAdmin上的一行 好吧,但当我用 代码: MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM User", connection); MySqlDataReader reader = getUserID.ExecuteReader(); 我明白了 错误: MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM U

我尝试从数据库中删除查询正在运行的phpAdmin上的一行 好吧,但当我用

代码:

MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM User", connection);

MySqlDataReader reader = getUserID.ExecuteReader();
我明白了

错误:

MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM User", connection);

MySqlDataReader reader = getUserID.ExecuteReader();
目标数组不够长,无法复制该数组中的所有项 收集检查数组索引和长度

我插入删除用户之前没有任何问题

数据库有一个
UserID
,其属性为
Unique
Int
(长度9)和
自动递增
,以及一个来自Char类型的
用户名

我的问题是:

MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM User", connection);

MySqlDataReader reader = getUserID.ExecuteReader();
为什么我不能接收
用户ID
,我如何才能接收

编辑

我不能只接收varchar的整数或日期数据

以下是数据库创建查询:

异常意味着您得到了意外的结果。ExecuteOnQuery方法尝试执行不返回任何行的查询,并返回一个整数,显示在数据库中编辑的行数。所以它试图将结果数组放入整数字段中,这是不可能的


因此,为了回答您的问题,错误的原因是查询。对于select查询,您应该使用ExecuteReader()方法。

首先,因为您要检索单个值(
UserID
),您可以在此处使用:

其次
用户
是一个,因此需要在表名周围使用反勾号以使其明确:

MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM `User`", connection);

问题是数据库MySqlConnection无法获取Int或Date值,如果它们不是未签名的,这也意味着异常:

“目标数组不够长,无法复制集合中的所有项。请检查数组索引和长度。”


你的数据有多大?表中有多少用户?这是一个小表,有20个值的“非查询”用于select?真的吗?您知道“选择”是每个定义的查询吗?ExecuteOnQuery用于不返回数据的事情(如更新、删除)。