idiotcsdnn 2021-12-27 11:01 采纳率: 50%
浏览 109
已结题

用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层有一个登录按钮事件和修改密码按钮事件请问怎么去做

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2021-12-27 11:15
    关注

    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


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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月28日
  • 已采纳回答 12月27日
  • 创建了问题 12月27日

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂