在dall层
1 /// <summary> 2 /// 根据用户名查找对象 3 /// </summary> 4 /// <param name="name"></param> 5 /// <returns></returns> 6 public ManagerInfo GetByName(string name) 7 { 8 //定义一个对象 9 ManagerInfo mi = null; 10 //构造语句 11 string sql = "select * from managerInfo where mname=@name"; 12 //为语句构造参数 13 SQLiteParameter p=new SQLiteParameter("@name",name); 14 //执行查询得到结果 15 DataTable dt = SqliteHelper.GetDataTable(sql, p); 16 //判断是否根据用户名查找到了对象 17 if (dt.Rows.Count > 0) 18 { 19 //用户名是存在的 20 mi=new ManagerInfo() 21 { 22 MId = Convert.ToInt32(dt.Rows[0][0]), 23 MName = name, 24 MPwd = dt.Rows[0][2].ToString(), 25 MType =Convert.ToInt32( dt.Rows[0][3]) 26 }; 27 } 28 else 29 { 30 //用户名不存在 31 } 32 return mi; 33 }
在到Bll层增加登录的逻辑
1 public LoginState Login(string name,string pwd,out int type) 2 { 3 //设置type默认值,如果为此值时,不会使用 4 type = -1; 5 //根据用户名进行对象的查询 6 ManagerInfo mi = miDal.GetByName(name); 7 if (mi == null) 8 { 9 //用户名错 10 return LoginState.NameError; 11 } 12 else 13 { 14 //用户名正确 15 if (mi.MPwd.Equals(Md5Helper.EncryptString(pwd))) 16 { 17 //密码正确 18 //登录成功 19 type = mi.MType; 20 return LoginState.Ok; 21 } 22 else 23 { 24 //密码错误 25 return LoginState.PwdError; 26 } 27 } 28 }
在UI层代码
1 private void btnLogin_Click(object sender, EventArgs e) 2 { 3 //获取用户输入的信息 4 string name = txtName.Text; 5 string pwd = txtPwd.Text; 6 //调用代码 7 int type; 8 ManagerInfoBll miBll=new ManagerInfoBll(); 9 LoginState loginState = miBll.Login(name, pwd,out type); 10 switch (loginState) 11 { 12 case LoginState.Ok: 13 FormMain main=new FormMain(); 14 main.Tag = type;//将员工级别传递过去 15 main.Show(); 16 //将登录窗体隐藏 17 this.Hide(); 18 break; 19 case LoginState.NameError: 20 MessageBox.Show("用户名错误"); 21 break; 22 case LoginState.PwdError: 23 MessageBox.Show("密码错误"); 24 break; 25 26 } 27 }
其中最后在Model 设置一个登录状态
public enum LoginState
{
Ok,
NameError,
PwdError
}