2014-03-25 43 views
0

我想在列中的所有值.. 這裏是我的代碼..如何獲取從數據表的列值到文本框?

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(); 
} 

它僅顯示第一value..but我想其他值按鈕的每次點擊.. 我的表只有一列

+0

檢查此鏈接:http://www.dotnetperls.com/sqldataadapter – noobob

回答

4

試試這個

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

我很抱歉,但我不明白爲什麼這個答案選中。這甚至沒有解釋如何從'SqlCommand'的結果中設置'dt'。 –

2

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

如果你想在列返回所有值,你需要使用SqlDataReaderExecuteReaderwhile語句至少。順便提一下,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>

0

ExecuteScalr返回一個值,其中作爲行ExecuteReader回報集合。 所以如果你想所有的效果,請使用ExecuteReader

相關問題