0

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

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

现在将使用 ado.net 从数据库中获取数据并将其发送到控制器的代码如下所示:-

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

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

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

然后每个员工列表包含 2 行具有相同数据的行。也就是说,这两行都包含 Emp2 数据,如下所示:

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

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

4

3 回答 3

3

移动你的

Users user = new Users();

在 for 循环内。

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

于 2013-02-16T14:38:57.477 回答
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()
  });}
于 2013-02-16T14:40:55.193 回答
0

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

Users user = new Users();

将此声明移到您的 for 中,为每一行创建一个用户对象。

于 2013-02-16T14:40:09.520 回答