用winform三层架构做了一个登录界面但是我只写了三层的代码 不知道怎么做UI层代码问怎么去读取我的三层去做登录界面和修改密码界面!


MODEL层
 #region
    public class listAccount
    {
        public int ID { get; set; }
        public string Account { get; set; }
        public string Password { get; set; }
    }
    #endregion
DAL层
#region 登录
 public static DataTable QuerylistAccount(/*int ID*/)
        {
            List<SqlParameter> para = new List<SqlParameter>();
            string sql = @"SELECT * FROM Account";
            //if(ID>0)
            //{
            //    sql += @"AND ID=@Acount";
            //    para.Add(new SqlParameter("@Account", SqlDbType.Int) { Value = ID });
            //}
            SqlParameter[] sp = para.ToArray();
            MSSQL db = new MSSQL(Global.DataBaseIP, Global.DataBaseName);
            return db.ExecuteDataTable(sql, sp);
        }
#region 修改密码
 public static int UpdatelistAccount(listAccount account)
        {
            string sql = @"UPDATE listAccount SET Account=@Account WHERE Password=@Password ";
            List<SqlParameter> pare = new List<SqlParameter>
            { 
                new SqlParameter("@Password", SqlDbType.Int) { Value = account.Password },
                new SqlParameter("@Account", SqlDbType.Int) { Value = account.Account }
               
            };
            SqlParameter[] sqls = pare.ToArray();
            MSSQL db = new MSSQL(Global.DataBaseIP, Global.DataBaseName);
            return db.ExecuteNonQuery(sql, sqls);
        }
BLL层
#region 登录
 public static List<listAccount> QuerylistAccount(string Account, string text)
        {
            DataTable dt = UserDAL.QuerylistAccount();
            List<listAccount> items = new();
            if (dt.Rows.Count > 0)
            {
            foreach (DataRow row in dt.Rows)
                {
                    listAccount item = new()
                    {
                        ID = (int)row[0],
                        Account = row["Account"].ToString(),
                        Password=row["Password"].ToString()
                    };
                    items.Add(item);
                }
            } 
                    return items;
        }
#region 修改密码
 public static int UpdatelistAccount(listAccount account)
        {
            return UserDAL.UpdatelistAccount(account);
        }
UI层
?


UI层有一个登录按钮事件和修改密码按钮事件请问怎么去做

QuerylistAccount登录是不是少传入账号和密码了?直接判断记录数,而不是返回所有的账号在循环对比。一定要返回所有账号循环对比参考下面的


        private void button2_Click(object sender, EventArgs e)
        {
            DataTable dt = DAL.QuerylistAccount();//注意修改QuerylistAccount所在的类名称,而且namespace不一样要注意using导入DAL所在名字空间
            bool find = false;
            foreach (DataRow dr in dt.Rows)
                //注意修改控件名
                if (dr["Account"].ToString() == textUserName.Text && dr["Password"].ToString() == txtPassword.Text) {
                    find = true;
                    break;
                }
            if (find)
            {
                //显示新窗体代码
            }
            else
            {
                MessageBox.Show("账号或者密码错误");
            }
        }

之前写的一个三层access数据库的,题主可以参考下
https://ask.csdn.net/questions/7561531

img


有帮助或启发麻烦点下【采纳该答案】,谢谢~~有其他问题可以继续交流~