2016-04-02 14 views
1

Veritabanından bazı verileri (özellikler hakkında bilgi) okuyor ve bilgileri Özellik nesnelerine kaydediyorum. Nesneleri Özellik türü listesine koyarım ve listenin içeriğini bir liste kutusunda görüntülerim. Ancak, her bir nesne için farklı veriler almak yerine, aynı verileri birden çok kez alıyorum. Ps. Property nesnesini while döngüsünde başlattım ve sorun devam ediyor. ben sadece test için döngü için bu kodu eklersenizVeritabanından veri okuma ve verileri bir Listeye kaydetme

void fillListBoxWithProperties() 
    { 
     List<Property> propList = new List<Property>(); 
     db_connection(); 
     MySqlCommand cmd = new MySqlCommand(); 
     cmd.CommandText = "select * from property "; 
     cmd.Connection = connect; 
     MySqlDataReader dr = cmd.ExecuteReader(); 

     while(dr.Read()) 
     { 
      Property prop = new Property(); 
      prop.PropId = Convert.ToInt32(dr["propertyId"]); 
      prop.Address = dr["Address"].ToString(); 
      prop.PropType = dr["PropertyType"].ToString(); 
      propList.Add(prop); 

     } 

     foreach(Property details in propList) 
     { 
      lstBoxProperties.Items.Add(String.Format("{0} {1}", details.PropId, details.Address)); 
     } 


    } 

What the list box prints

:

Property prop = new Property(); 
      prop.PropId = Convert.ToInt32(dr["propertyId"]); 
      prop.Address = dr["Address"].ToString(); 
      prop.PropType = dr["PropertyType"].ToString(); 
      propList.Add(prop); 
      //added code 
      foreach (Property o in propList) 
      { 
       Console.WriteLine(o.toString()); 
      } 

konsolunda sonuç şudur:

Ballyare, Rathmulan, Rathmulan, Letterkenny, Letterkenny, Letterkenny, konvoy, konvoy, konvoy, konvoy, Gweedore, Gweedore, Gweedore, Gweedore, Gweedore, Glenties, Glenties, Glenties, Glenties, Glenties, Glenties,

Özellik sınıfı kodu:

class Property 
{ 
    private static int _propId =0; 
    private static string _address=""; 
    private static string _propType=""; 
    public Property() 
    { 

    } 

    public int PropId 
    { 
     get { return _propId; } 
     set { _propId = value; } 
    } 
    public string Address 
    { 
     get { return _address; } 
     set { _address = value; } 
    } 
    public string PropType 
    { 
     get { return _propType; } 
     set { _propType = value; } 
    } 
} 
+1

PropList'in döngüsel döngüsüne kesme noktası koyun. PropList koleksiyonunda kaç öğe var? – ICTech

+0

Veritabanında 6 kayıt var, bu yüzden 6. –

+0

sadece 'lstboxProperties.DataSource = propList; 'foreach döngüsü yerine – mvikhona

cevap

3

Şimdi, Property sınıfını ekledikten sonra, tüm örneklerin neden aynı içeriğe sahip olduğu anlaşılıyor. Özel üyelerinizi static numaralı veriye kaydettiniz. Böylece her bir örnek için ayrı ayrı var olmazlar, ancak sınıfın tüm örnekleri için sadece bir kez. static anahtar sözcüğünü kaldırın (ve bunun ne işe yaradığını öğrenin)

+0

OMG. Kendimi çok aptalım. Yardım etmeye çalışan herkesi rahatsız ettiğim için üzgünüm, minnettarım. Bunu ilk başta neden yaptığımı bilmiyorum. –

+0

@javabanter Sorun değil. Bu tür şeyler zaman zaman hepimizin başına gelir. PS lütfen kabul etmeyi unutmayın, eğer sorununuzu çözdüyse – derpirscher

+0

Üzgünüm ama bu konuda yeniyim bu yüzden kabul ederek ne demek istediğimi bilmiyorum ve nasıl yaparım? –

İlgili konular