我有一个名为“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
我怎样才能摆脱上述问题?我甚至都不知道是什么原因?
答案 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中移动此声明,为每行创建一个用户对象。