我连接mysql数据库,然后我得到x行。当我尝试推送阵列时系统出错了。我不明白这个问题。
我试过这段代码。但我得到的错误就像债券阵列一样......
int uz = b();// this func. get row number on the table
int[] userData = new int[uz];
MySqlConnection bag = new MySqlConnection(connstring);
MySqlCommand cmd = new MySqlCommand("Select readerid From readers",bag);
bag.Open();
MySqlDataReader oku = cmd.ExecuteReader();
oku.Read();
for (int i = 0; i <= uz; i++) {
userData[i] = Convert.ToInt32(oku[i]);
listBox1.Items.Add(userData[i]);
}
bag.Close();
答案 0 :(得分:0)
我认为你应该使用i&lt; uz而不是i&lt; = uz。
for(int i = 0; i&lt; uz; i ++)
修改强> 根据你的评论我认为你可以试试这个:
List<int> userData = new List<int>();
MySqlConnection bag = new MySqlConnection(connstring);
MySqlCommand cmd = new MySqlCommand("Select readerid From readers",bag);
bag.Open();
MySqlDataReader oku = cmd.ExecuteReader();
while (oku.Read())
{
int current = Convert.ToInt32(oku["readerid"]);
userData.Add(current);
listBox1.Items.Add(current);
}
不要忘记在不需要它们之后关闭连接。
答案 1 :(得分:0)
看起来主要的问题是您认为oku[i]
会从索引i
的行中为您提供数据。它真正的作用是为当前行的索引i
的列提供数据。但是,原始代码还存在其他几个问题。
这应该指向更好的方向:
var userData = new List<int>();
using (var bag = new MySqlConnection(connstring))
using (var cmd = new MySqlCommand("Select readerid From readers",bag))
{
bag.Open();
using (MySqlDataReader oku = cmd.ExecuteReader())
{
while (oku.Read())
{
userData.Add(oku[0]);
//userData.Add(oku["readerid"]); //would also work
}
}
}