使用MySQL数据阅读器

时间:2015-04-16 13:09:49

标签: c# mysql datareader

我不熟悉使用Data Reader,我需要以下代码的帮助,我想从数据库中检索单个数据。

MySqlDataAdapter data = new MySqlDataAdapter(cmd);
                    conn.Open();
                    DataTable dt = new DataTable();
                    data.Fill(dt);
                    gridView1.DataSource = dt;

                    int retrievedValue = 0;
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            if ((int)reader["order_status"] == 0)
                            {
                                retrievedValue = (int)reader.GetValue(0);

                                    GridView View2 = sender as GridView;
                                    e.Appearance.BackColor = Color.Green;
                                    e.Appearance.BackColor2 = Color.ForestGreen;
                            }
                        }
                    }

2 个答案:

答案 0 :(得分:5)

reader["order_status"]返回object,因为您告诉它是已经整数,您需要先将其强制转换为int

您还需要使用== operator,因为它是一个相等运算符。 = operator是一个赋值运算符。

if ((int)reader["order_status"] == 0)

或者,您可以将GetInt32 method从零开始的列号一起使用。我们假设它是您的查询返回的第一列,您可以像使用它一样使用它;

if(reader.GetInt32(0) == 0)

顺便说一下,如果你只想获得单一值,我强烈怀疑你可能想要使用ExecuteScalar方法,因为它得到了第一行的第一列。然后,您可以将查询结构化为SELECT order_status FROM ...等。

答案 1 :(得分:1)

请务必在while (reader.Read())之前分配一个变量,否则会出现错误。完成使用后,请关闭数据阅读器。像这样:

 using (MySqlDataReader reader = cmd.ExecuteReader())    
    {

    int retrievedValue = 0;

          while (reader.Read())
          {
                retrievedValue = (int)reader.GetValue(0);
                if (retrievedValue == 0)
                {

                    GridView View2 = sender as GridView;
                                    e.Appearance.BackColor = Color.Green;
                                    e.Appearance.BackColor2 = Color.ForestGreen;
                }
                else if (retrievedValue == 1)
                {

                    GridView View2 = sender as GridView;
                                    e.Appearance.BackColor = Color.Red;
                                    e.Appearance.BackColor2 = Color.ForestGreen;
                }
          }//and so on...
          reader.Close();
    }

我希望这是你正在寻找的。