C# 通过选择UserID(PK)在ExecuteReader上出现MySqlException
我尝试从数据库中删除查询正在运行的phpAdmin上的一行 好吧,但当我用 代码: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
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用于不返回数据的事情(如更新、删除)。