选择UserID(PK)对ExecuteReader的MySqlException

时间:2016-03-22 22:47:16

标签: c# mysql mysql-connector

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

执行它

代码:

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

MySqlDataReader reader = getUserID.ExecuteReader();

我得到了

错误:

  

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

我没有任何问题地插入删除用户。

数据库的UserID属性UniqueInt(长度9)和Auto-Increment以及Char类型的UserName

我的问题是:

为什么我无法收到userID,我该如何收到?

修改

我无法接收任何整数或日期数据varchar。

这是数据库创建查询: Creation Query

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

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

MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM `User`", connection);
connection.Open();
int userId = (int)getUserID.ExecuteScalar();
connection.Close();

其次 Userreserved keyword,因此您需要在表名周围使用反引号使其明确:

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

答案 2 :(得分:3)

问题是数据库MySqlConnection如果不是无符号则无法获取Int或Date值,这也意味着异常:

  

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