我尝试在查询正在运行的phpAdmin上从数据库中删除一行 很好,但当我用
执行它代码:
MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM User", connection);
MySqlDataReader reader = getUserID.ExecuteReader();
我得到了
错误:
目标数组不够长,无法复制中的所有项目 采集。检查数组索引和长度。
我没有任何问题地插入删除用户。
数据库的UserID
属性Unique
,Int
(长度9)和Auto-Increment
以及Char类型的UserName
。
我的问题是:
为什么我无法收到userID
,我该如何收到?
修改
我无法接收任何整数或日期数据varchar。
这是数据库创建查询: Creation Query
答案 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();
其次 User
是reserved keyword,因此您需要在表名周围使用反引号使其明确:
MySqlCommand getUserID = new MySqlCommand("SELECT UserID FROM `User`", connection);
答案 2 :(得分:3)
问题是数据库MySqlConnection如果不是无符号则无法获取Int或Date值,这也意味着异常:
“目标数组不够长,无法复制集合中的所有项目。请检查数组索引和长度。”