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

MySqlException on ExecuteReader by Selecting UserID(PK)

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

执行它时

代码:

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

MySqlDataReader reader = getUserID.ExecuteReader();

我明白了

错误:

Destination array is not long enough to copy all the items in the collection. Check array index and length.

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

数据库有一个 UserID,其属性为 UniqueInt(长度 9)和 Auto-Increment,以及一个来自 Char 类型的 UserName

我的问题是:

为什么我收不到userID,我怎样才能收到?

编辑

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

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

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

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

首先因为你想检索单个值(UserID)你可以在这里使用ExecuteScalar :

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

其次 User是一个reserved keyword,所以你需要在table名称周围使用反引号使其明确:

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

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

"Destination array is not long enough to copy all the items in the collection. Check array index and length."