获取C#mysql中单个列的值并将其放在文本框中

时间:2018-02-16 09:18:39

标签: c# mysql datareader

我的这个名为 WeeklySales 的表格有2列,日期和时间销售。现在,我的表单上有3个文本框。我想得到表中添加的最新值,所以我有这个字符串。

    string sql = "SELECT Sales FROM database.weeklysales ORDER BY DateandTime DESC LIMIT 3";

现在,我有这个数据库(假设月份是日期),

 DateandTime | Sales
 March       | $300
 February    | $500
 January     | $400

并使用该字符串获取此结果:

 Sales
 $300
 $500
 $400

现在,我想将第一行放入第一个文本框,然后将第二行放入第二个文本框,依此类推......现在,我不知道Datareader内部有什么内容......

        try
        {
            con.Open();
            using (reader = cmd.ExecuteReader())
            {
               first.Text = ?
               second.Text = ?
               third.Text = ?
            }
        }
        finally
        {
            con.Close();
        }

我已经搜索了但不幸的是他们只获得了第一行。

3 个答案:

答案 0 :(得分:2)

SqlDataReader类有一个Read()方法,只要有更多行要读取,它就会返回一个bool。例如,您可以使用while循环来读取多行。

using (SqlDataReader reader = cmd.ExecuteReader()
{
   while (reader.Read())
   {
      //Do your stuff here
   }
}

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read%28v=vs.110%29.aspx

答案 1 :(得分:2)

由于您只需要填写3个文本框 - 没有循环只需手动推进阅读器。

MySqlDataReader dr = cmd.ExecuteReader();
dr.Read();
first.Text = dr.GetValue(0).ToString();
dr.Read();
second.Text = dr.GetValue(0).ToString();
dr.Read();
third.Text = dr.GetValue(0).ToString();

答案 2 :(得分:1)

以下代码对您有所帮助,

using (reader = cmd.ExecuteReader())
{
    if (reader.HasRows)
    {   
       int i = 1;                    
       while (reader.Read())
       {
          switch (i)
          {
             case 1:
             first.Text = reader["Sales"].ToString();
             break;
             case 2:
             second.Text = reader["Sales"].ToString();
             break;
             default:
             third.Text = reader["Sales"].ToString();
             break;             
          } 
          i += 1;         
       }
     }
}