2012-12-01 51 views
3

我試圖將SQL語句的結果放到窗體上的組合框中。我已經拖網網的答案,我不能比這再得到:將SQL語句的結果轉換爲列表

using (SqlCeConnection c = new SqlCeConnection(
Properties.Settings.Default.CW2_DBConnectionString)) 
{ 
    c.Open(); 

    List<Visit> rows = new List<Visit>(); 

    SqlCeCommand cmd = c.CreateCommand(); 
    cmd.CommandText = "SELECT PICKUP_ID FROM PICKUP"; 

    c.Open(); 
    cmd.ExecuteNonQuery(); 

    SqlCeDataReader reader = cmd.ExecuteReader(); 

    while (reader.Read()) 
    { 

    } 

    cmbPickupID.Items.Add(rows); 
} 

我不知道要放什麼東西在while循環。我確實有這樣的:

rows.Add(reader["PICKUP_ID"].ToString()); 

但顯然它沒有工作。 Visit類已設置並獲取VisitID。有沒有人有任何想法?

+1

'Visit'有什麼樣的構造函數? – dasblinkenlight

+0

您的SqlCeCommand和SqlCeDataReader都需要使用''使用'塊。 –

回答

5

第一關:您不需要cmd.ExecuteNonQuery();

其次:如果您Visit類有一個屬性PICKUP_ID,並且您使用的Visit項目的列表,然後你需要實際Visits添加到列表中,而不只是字符串,像這樣:

rows.Add(new Visit() {pickupid = reader["PICKUP_ID"].ToString()}); 

,如果你只需要的標識, ñ你可能只是做一個List<string>。你發佈的代碼會有效。

2

擺脫cmd.ExecuteNonQuery();這不是需要嗎?

試試這個:

 while (reader.Read()) 
     { 
      cmbPickupID.Items.Add(reader["PICKUP_ID"].ToString()); 
     } 
1

我可以使用Reflection和其他東西。我建議你使用Dapper

您可以使用Dapper將一個查詢的結果轉換爲一個類。

對於使用短小精悍做到這一點:

1:Visual studio右鍵點擊你的項目並選擇Manage Nuget Packages

2:在search Online文本框中輸入Dapper。

3:在網絡上搜索這個DLL後,你可以安裝它(你最有連接到互聯網)。

4:創建Domain Class

private class DomainClass 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     //public int Sex { get; set; } 
     public SexEnum sex { get; set; } 
    } 

5:如果你有一些領域,大部分轉換爲與輸精管類型(枚舉類型)一些外地 不喜歡Sex場。

6:創建連接字符串和sqlConnection對象:

var connectionStr = "Server=ArdalanShahgholiPC;Database=Dapper;User Id=sa;Password=sa;"; 
SqlConnection sqlConn = new SqlConnection(connectionStr); 

7:和finilly使用Dapper.SqlMapper來執行,並在你的域類轉換查詢。

IList<DomainClass> TestList = Dapper.SqlMapper.Query<DomainClass>(
           sqlConn, "Select * From ATest").ToList(); 

最後你可以用TestList