先上一张图,七层相对于三层来说,运用了设计模式,增加了接口。
代码:
实体层:
public class UserInfo { public string ID { get; set; } public string UserName { get; set; } public string PassWord { get; set; } public string Level { get; set; } public string Head { get; set; } }
IDAL层:
public interface LoginIDAL { DataTable selectUser(UserInfo UserInfo); }
DAL层:
public DataTable selectUser(Entity.UserInfo UserInfo) { CommandType Text = 0; sqlHelper sqlhelper = new sqlHelper(); SqlParameter[] sqlParameter = { new SqlParameter("@UserName", UserInfo.UserName), new SqlParameter("@PassWord", UserInfo.PassWord) }; string sql = @"SELECT * FROM [User_Info] WHERE UserName = @UserName and PassWord = @PassWord"; DataTable table = sqlhelper.ExecuteReader(sql, Text, sqlParameter); return table; }
Factory层:
public class LoginFactory { public static readonly string db = ConfigurationManager.AppSettings["DB"]; public static readonly string AssemblyName = "DAL"; public LoginIDAL CreateUser() { string ClassName = AssemblyName + "." + db + "LoginDAL"; return (LoginIDAL)Assembly.Load(AssemblyName).CreateInstance(ClassName); } }
BLL层:
public bool UserBLL(Entity.UserInfo UserInfo) { //实例化工厂 Factory.LoginFactory factory = new Factory.LoginFactory(); //调用工厂方法创建工厂 接口 IDAL.LoginIDAL idal = factory.CreateUser(); //接受D层返回值 DataTable table = idal.selectUser(UserInfo); bool flag; //返回DataTable类型,行数等于0 if (table.Rows.Count == 0) { flag = false; } else { flag = true; } return flag; }
Facade层:
public Boolean SelectUser(Entity.UserInfo user) { bool flag; BLL.LoginBLL userBLL = new BLL.LoginBLL(); flag = userBLL.UserBLL(user); return flag; }
UI层:
public partial class FormLogin : Form
{ public static string[] userin = new string[5]; public static string UserName; public FormLogin() { InitializeComponent(); } private void FormLogin_Load(object sender, EventArgs e) { } private void btOK_Click(object sender, EventArgs e) { //判断输入是否为空 //如果没有用户名 or 密码 if (txtUserName .Text.Trim () == string.Empty || txtPassWord .Text.Trim () == string.Empty) { MessageBox.Show("请完善用户或者密码信息", "温馨提示"); return; }
//输入内容与数据库相连 Facade.LoginFacade loginFacade = new Facade.LoginFacade(); Entity.UserInfo user = new Entity.UserInfo(); UserName = txtUserName.Text.Trim(); user.UserName = txtUserName.Text.Trim(); user.PassWord = txtPassWord.Text; Boolean flag = false; flag = loginFacade.SelectUser(user); if (flag != false ) { Main main = new Main(); main.Show(); Facade.LoginFacade jfLogin = new Facade.LoginFacade(); flag = jfLogin.SelectUser(user); } else { MessageBox.Show("用户名或密码错误,请重新输入","提示"); txtUserName.Focus(); } } }
} }