在c#中从Mysql数据库获取数据到数组

本文关键字:数据 数组 获取 数据库 中从 Mysql | 更新日期: 2023-09-27 18:12:02

嗨,我有数据库的用户数据,我需要这些数据得到我的数组在c#与cyklus

这段代码

MySqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "SELECT * FROM usersdata WHERE user_id='1'";
MySqlDataReader dataReader = cmd.ExecuteReader();
int i = 0;
while (dataReader.Read())
{
    userdata[i] = Convert.ToInt32(dataReader[i]);
    i++;               

 }

 dataReader.Close();

但这个工作只有一个,为id 0后一无所获,谁来帮帮我?非常感谢

我需要数据阅读器读取所有列,并给出信息从列0到userdata[0],列1到userdata[1]等....

在c#中从Mysql数据库获取数据到数组

数据读取器正在读取当前记录的字段索引。您需要将dataReader[i]更改为dataReader[0],但继续增加userdata变量的索引。

应该是这样的:

while (dataReader.Read())
{
    userdata[i++] = Convert.ToInt32(dataReader[0]); //i++ can be included right in the array index.
}

请尝试一下

while (dataReader.Read())
{
    userdata[i] = Convert.ToInt32(dataReader[0]);
    i++;
    userdata[i] = Convert.ToString(dataReader[1]);//Change the datatype base on the data type of the field in the table
    i++;               

}

问题是dataReader.Read()意味着"转到数据库并获得下一行"。听起来你想从一行中获取所有的数据。

我觉得你想要的更像:

dataReader.Read();
for (int i=0; i</*number of columns that you have*/; i++) {
    userData[i] = Convert.ToInt32(dataReader[i]);
}

注意dataReader.Read()只被调用一次,所以你只会看到第一行的数据- user_id = 1所在的行(注意:我假设只有一行这是真的,你的问题/评论暗示了这一点,但没有明确地说出来)。