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

Posted

技术标签:

【中文标题】在 C# mysql 中获取单个列的值并将其放入文本框中【英文标题】:Get values of a single column in C# mysql and put it in textbox 【发布时间】:2018-02-16 09:18:39 【问题描述】:

我有一张名为 WeeklySales 的表格,它有 2 列,DateandTimeSales。现在,我的表单上有 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();
        

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

【问题讨论】:

您可以在很多地方学习如何正确使用数据阅读器。我建议你这样做。 我已经彻底搜索,但无法获得正确的结果。如果我知道该放什么,我就不会在这里问了。 ***.com/questions/4018114/… 有帮助 【参考方案1】:

由于您只有 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();

【讨论】:

谢谢。我解决了这个问题。但是如果我想把这三个都放在一个富文本框中(每个数据都放在一行中)怎么办?我知道我会使用循环,但我应该在 dr.GetValue(0).ToString(); 中替换什么 @Mamayg 我认为您应该问一个新问题,说明您尝试过什么以及它是如何不起作用的。【参考方案2】:

SqlDataReader 类有一个Read() 方法,只要有更多行要读取,它就会返回一个布尔值。例如,您可以使用它通过 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

【讨论】:

谢谢。我忘了包括那个......但我最需要的是我应该首先放入什么。Text = ?....我总是阅读器。GetValue(0).ToString();但它是用于行的,不是吗?【参考方案3】:

以下代码将对您有所帮助,

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;         
       
     

【讨论】:

谢谢,但它仍然只显示最后一个(而不是第一个)而不是所有值。无论如何,我通过上面的答案解决了我的问题。再次感谢您,【参考方案4】:

避免重复或在多个对象的情况下

public void Example(MySqlDataReader dr)
        
            TextBox a = new TextBox();
            TextBox b = new TextBox();
            TextBox c = new TextBox();

            foreach(TextBox current in new List<TextBox>  a, b, c )
            
                dr.Read();
                current.Text = dr.GetValue(0).ToString();
            
        

【讨论】:

这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于在 C# mysql 中获取单个列的值并将其放入文本框中的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 如何获取列的值并将其作为新列的值放在字符串的末尾

比较两列的值小于或等于并在mysql中获取选定的行?

c# 如何从datatable中取出某列的值并去除这一列的相同值,并将这列添加到新的表中

在 Sql Server 中,如何将游标中的值放入临时表中?

sql 示例:如何获取多行结果并将它们放入单个字符串中

一次获取数据并放入两个不同的 div