从数据库读取数据并将数据存储在List中

时间:2016-04-02 11:21:06

标签: c# winforms

我正在从数据库中读取一些数据(有关属性的信息),并将信息存储在Property对象中。我将对象放在类型属性的列表中,然后在列表框中显示列表的内容。然而,我没有为每个对象获取不同的数据,而是多次获得相同的数据。 PS。我在while循环中实例化了Property对象,问题仍然存在。

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

控制台中的结果如下:

Ballyare, Rathmulan, Rathmulan, 莱特肯尼, 莱特肯尼, 莱特肯尼, 护航, 护航, 护航, 护航, Gweedore, Gweedore, Gweedore, Gweedore, Gweedore, Glenties, Glenties, Glenties, Glenties, Glenties, Glenties,

物业类代码:

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 个答案:

答案 0 :(得分:3)

好吧,现在,在您添加static课程之后,很明显为什么您的所有实例都具有相同的内容。您让私人成员持有数据static。因此,它们不是针对每个实例单独存在,而是针对该类的所有实例仅存在一次。删除{{1}}关键字(并查看其内容的介绍)