【问题标题】:Get Data from Mysql Database to array in C#从 Mysql 数据库中获取数据到 C# 中的数组
【发布时间】:2014-07-08 13:34:56
【问题描述】:

您好,我有包含用户数据的数据库,我需要使用 cyklus 将这些数据放入 C# 中的数组

这段代码

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 after nothing ,有人帮助我吗?非常感谢

我需要数据读取器读取所有列并将第 0 列的信息提供给 userdata[0],将第 1 列的信息提供给 userdata[1] 等等......

【问题讨论】:

  • 您确定您的user_id='0' 会返回数据吗?而且您不需要 i 并增加它。 .Read 方法逐行读取您的数据。在您的示例中,这仅读取第一行的第一列,第二行的第二列,第三行的第三列 ..您也可以使用GetXXX() SqlDataReader的方法。
  • 不是您问题的答案,但您应该使用dataReader.GetInt32(i) 而不是Convert.ToInt32(dataReader[i])
  • 这段代码将从第 0 行读取第 0 列,然后从第 1 行读取第 1 列,从第 2 行读取第 2 列......你想要它做什么?从每一行读取一列?还是读取每一行的所有列?
  • 从 user_id='1' 的行中读取所有列
  • 您是否希望从数据库中返回准确一行?你期待什么专栏?它们的类型是什么?

标签: c# mysql


【解决方案1】:

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

它应该看起来像这样:

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

【讨论】:

    【解决方案2】:

    请试试这个

    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[1] 的值分配给另一个变量吗?否则,您将覆盖来自dataReader[0] 的值。
    【解决方案3】:

    问题在于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 所在的行(注意:我假设只有一行是这样的,你的question/cmets 暗示了这一点,但没有明确说明)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-05
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 2012-08-16
      相关资源
      最近更新 更多