如何从数据表到文本框获取列值?

时间:2014-03-25 12:44:43

标签: c#

我想获取列中的所有值.. 这是我的代码..

private void btnLeftArrow_Click(object sender, EventArgs e)
{
        if (con.State == ConnectionState.Open) { con.Close(); }
        con.Open();
        DataTable dt=new DataTable();
        SqlCommand cmd = new SqlCommand("select * from Group_Name", con);
        object obj = cmd.ExecuteScalar();
        if (obj != null)
            txtGroupName.Text = obj.ToString();
        con.Close();
}

它只显示第一个值..但我想为每次点击按钮获取其他值。 我的表只有一列

3 个答案:

答案 0 :(得分:4)

试试这个

while(dt.Rows.Count>0)
{
txtGroupName.Text=dt.Rows[0]["column_name"].ToString();
}

答案 1 :(得分:3)

ExecuteScalar method返回第一行的第一列。所有其他列或行都将被忽略。

如果您想要返回列中的所有值,则需要至少使用SqlDataReaderExecuteReader while语句。顺便说一句,SqlDataReader.Read method会按行读取

例如;

...
SqlCommand cmd = new SqlCommand("select * from Group_Name", con);
using(SqlDataReader reader = cmd.ExecuteReader())
{
   while(reader.Read())
   {
      string firstcolumn = reader[0].ToString(); // It is zero-indexed.
   }
}

但看起来您想要将这些值添加到TextBox,您可以在List<T>中添加空格,然后您可以将它们用于TextBox之类的(我假设你的值是string);

List<string> list = new List<string>();
...
...
while(reader.Read())
{
   list.Add(reader[0].ToString());
}
TextBox1.Text = String.Join(" ", list.ToArray());

如果您使用的是.NET 4或更高版本,则不需要使用.ToArray(),因为there is an overload of String.Join需要IEnumerable<string>

答案 2 :(得分:0)

ExecuteScalr返回单个值,其中ExecuteReader返回行集合。 因此,如果您希望所有结果都使用ExecuteReader