列表与LT;>无法保存数据库的数据

时间:2013-02-16 14:35:01

标签: c# asp.net-mvc ado.net

我有一个名为“Employee”的sql表。该表有4个字段:EMPLID,EMPNAME,EMPCONTACT和EMPEMAIL。我正在创建一个Asp.net MVC应用程序。在我的模型中,我有一个Users类,如下所示: -

Class Users
{
    public string ID{get; set;}
    public string Name{get;set;}
    public string Contact{get;set;}
    public string Email(get;set;}
}

现在将使用ado.net从数据库获取数据并将其发送到Controller的代码如下: -

Class DatabaseAccess
{
    public List<Users> GetData()
    {
        List<Users> eachemployee = new List<Users>;
        Users user = new Users();

        SqlConnection conn = new SqlConnection(Connectionstring);
        con.open();
        SqlDataAdapter adp = new Sql Data Adapter("Select * From Employee",conn);
        Dataset ds = new dataset();
        adp.fill(ds,"Employee");

        for(int i=0;i<ds.tables[0].rows.count;i++) 
        {
            user.ID = ds.Tables[0].rows[i]["EMPID"].tostring(); 
            user.Name = ds.Tables[0].rows[i]["EMPNAME"].tostring();
            user.Contact = ds.Tables[0].rows[i]["EMPCONTACT"].tostring();
            user.Email = ds.Tables[0].rows[i]["EMPEMAIL"].tostring();
            eachemployee.Add(user);
       }
       return eachemployee;
   }

现在问题是eachemployee总是包含具有相同数据的行。如果表有2行,如下所示:

Emp1, Gaurav, 888888888,abc@gmail.com
Emp2, Sharma, 999999999,xyz@gmail.com

然后,eachemployee列表包含2行,具有相同的数据。这两行都包含Emp2数据,如下所示:

Emp2, Sharma, 999999999,xyz@gmail.com
Emp2, Sharma, 999999999,xyz@gmail.com

我怎样才能摆脱上述问题?我甚至都不知道是什么原因?

3 个答案:

答案 0 :(得分:3)

移动你的

Users user = new Users();
在for循环中

在您的代码中,您只创建了一个对象,并且您总是修改它并将其多次添加到列表中...

答案 1 :(得分:1)

你可以选择

for(int i=0;i<ds.tables[0].rows.count;i++){
eachemployee.Add(new User()
  { 
     ID = ds.Tables[0].rows[i]["EMPID"].tostring(),
     Name = ds.Tables[0].rows[i]["EMPNAME"].tostring(),
     Contact = ds.Tables[0].rows[i]["EMPCONTACT"].tostring(),
     Email = ds.Tables[0].rows[i]["EMPEMAIL"].tostring()
  });}

答案 2 :(得分:0)

您只创建一个用户对象,并始终将值分配给同一对象。

Users user = new Users();

在for中移动此声明,为每行创建一个用户对象。