我想获取列中的所有值.. 这是我的代码..
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();
}
它只显示第一个值..但我想为每次点击按钮获取其他值。 我的表只有一列
答案 0 :(得分:4)
试试这个
while(dt.Rows.Count>0)
{
txtGroupName.Text=dt.Rows[0]["column_name"].ToString();
}
答案 1 :(得分:3)
ExecuteScalar
method返回第一行的第一列。所有其他列或行都将被忽略。
如果您想要返回列中的所有值,则需要至少使用SqlDataReader
和ExecuteReader
与 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