【发布时间】:2017-09-27 20:15:19
【问题描述】:
我在 asp.net c# 中有 DAL 代码,用于在 DB sql server 中选择我的 table_users 的所有用户。
我的 DAL:
public class Users
{
private string _UserName;
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}
private string _Pass;
public string Pass
{
get { return _Pass; }
set { _Pass = value; }
}
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
private string _Family;
public string Family
{
get { return _Family; }
set { _Family = value; }
}
private string _Mobile;
public string Mobile
{
get { return _Mobile; }
set { _Mobile = value; }
}
}
public List<Users> GetAllUsers()
{
List<Users> usersList = null;
using (DataTable table = SqlDBHelper.ExecuteSelectCommand("GetAllUsers", CommandType.StoredProcedure))
{
if (table.Rows.Count > 0)
{
usersList = new List<Users>();
foreach (DataRow row in table.Rows)
{
Users user = new Users();
user.UserName = table.Rows[0]["UserName"].ToString();
user.Pass = table.Rows[0]["Pass"].ToString();
user.Name = table.Rows[0]["Name"].ToString();
user.Family = table.Rows[0]["Family"].ToString();
user.Mobile = table.Rows[0]["Mobile"].ToString();
usersList.Add(user);
}
}
}
return usersList;
}
还有我的 BLL 调用代码:
public List<Users> GetAllUsers()
{
return userDB.GetAllUsers();
}
现在我想调用在网格视图中显示数据的方法。
public List<Users> usersList = null;
UsersHadler userDB = new UsersHadler();
usersList = userDB.GetAllUsers();
foreach (Users user1 in usersList)
{
GridView1.DataSource = usersList;
GridView1.DataBind();
}
我在数据库中有 3 个用户。uer1 和 user2 和 user3 问题是我在 gridview 3 行中看到一个 user1。 用户1 用户1 用户1 怎么了。? 谢谢回复
`
【问题讨论】:
-
你真的需要更好地理解循环。看看你在 DAL 中循环的内容。您正在循环表中的行,但是在每次迭代中,您将返回到表中的第 0 行。您应该引用循环中声明的行。这与 Jaquez 在将 usersList 重复绑定到 GridView 时向您指出的问题非常相似。
-
安全警报!您是否将明文密码存储在数据库中?这是严重的安全违规行为!密码应该是单向散列和加盐的。此外,您的
Users类应该只称为User代表单个用户,而不是集合。你应该看看auto properties,它可以减少不必要的代码。 -
嗨,谢谢。回复。特别是为了您的安全警报!