2013-03-08 65 views
0

我想僅顯示datagridview中的第一個名稱。這是我的查詢,但它不返回任何內容:在datagridview中顯示數據庫中的單個行

sc.Open(); 
cmd.CommandText = "select * from myEmployees where JobRole ='Waiter'"; 
dr = cmd.ExecuteReader(); 
if (dr.HasRows) 
{ 
    while (dr.Read()) 
    {        
     dgNames.DataSource = dr["firstName"]; 
     count++      
    }   
}    
sc.Close(); 

回答

1

您不能將數據源設置爲只是一個屬性。你可以做的是在gridview中定義一個綁定到名字列的列,然後將網格的數據源設置爲返回對象的整個集合。其次,您可以簡單地將Datareader綁定到網格,不需要執行while循環。

更新

dgNames.AutogenerateColumns=false; 
dgNames.Columns.Add("firstName","firstName"); 
dgNames.DataSource=dr; 

如果你想知道如何返回了多條記錄,簡單地計算網格中的行後,勢必數目...或加載一個DataTable與DataReader和綁定Dataable到網格而不是綁定Datareader。 DataTables.Rows.Count會告訴你有多少記錄被返回。

+0

你能給我一個片段請 – Tacit 2013-03-08 19:05:03

+0

@tacit你使用的Winforms或asp.net? – Icarus 2013-03-08 19:05:54

+0

我使用的WinForms – Tacit 2013-03-08 19:07:05

0

這是直接從MSDN(谷歌'datagridview',它是正確的頂部)。滾動到底部,並有示例代碼演示如何執行您所要求的操作。 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx

正如伊卡洛斯所說 - 您可以將數據綁定到數據中,而不需要逐行檢查數據,就像您正在嘗試的那樣。但是,如果你想要去行由行,你可以

... 
dgNames.Rows.Add(dr["firstName"]); 
... 

而且 - 你不需要增加一個DataReader,在一個while循環就像你正在使用。

+0

即時通訊不增加數據讀取器即時計算返回多少記錄加上面的行會引發異常 – Tacit 2013-03-08 19:17:28

+0

參數可能需要是一個字符串數組 - 查看上面鏈接處的rows屬性,專門談論它 - 無論如何,我實際上無法爲你做你的代碼(沒有你的更多信息),所以我能做的就是給你鏈接到答案。查看MSDN文章 - 它是「手冊」,並且有一個工作示例。另外 - 你可以在你的datagridveiw上調用rowcount,如果你想要一個rowcount - 你自己,但無論如何,fwiw。 – Chains 2013-03-08 19:24:54

+0

謝謝隊友我正在看鏈接,看看我是否能夠理解它,非常感謝您的幫助 – Tacit 2013-03-08 19:27:08

相關問題