三层架构实例
新建一个空白解决方案。然后:
1.“添加”-“新建项目”-“Visual C#”-“类库”-“称:LoginBLL”-“业务逻辑”(业务层,下简称B层)如下图:
2.“添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginDAL”-“数据访问”(数据层,下简称D层)如下图:
3.“添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginUI”(界面层,下简称U层)如下图:
U层的界面效果图:如下图
4. “添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginModel”(以下实体层)如下图:
三层建立后的效果图,如下图:
右键点“解决方案”-“添加引用”,设置U依引用D、B,B引用于D。对U添加引用D、B,对B添加引用D。如下图:
引用步骤一:
引用步骤二:
到此为止,一个登录的三层架构的建立起来了。
B层代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Login.BLL; using Login.DAL; using Login.Model; namespace Login.BLL { public class LoginManager { public UserInfo UserLogin(string userName, string password) { UserDAO uDao = new UserDAO(); //实例化D层的类 UserInfo user = uDao.SelectUser(userName, password); //将user信息传递给D层 if (user == null) //判断user信息 { throw new Exception("登陆失败"); } else { return user; } } } }
D层代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Login.Model; using System.Data.SqlClient; using System.Data; namespace Login.DAL { public class UserDAO { //连接数据库 public static string ConnString = @"Server=XJC-PC; Database=chargeStudent; User ID=sa; Password=123456"; public UserInfo SelectUser(string userName, string password) //各层都要用到实体类userInfo 通过实体类连接 { using (SqlConnection conn = new SqlConnection(ConnString)) { SqlCommand cmd = conn.CreateCommand(); //数据库连接命令 cmd.CommandText = @"select * from user_Info where user_Name=@userName AND user_PWD=@password"; cmd.CommandType = CommandType.Text; cmd.Parameters.Add(new SqlParameter("@userName", userName)); cmd.Parameters.Add(new SqlParameter("@password", password)); conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); //读取数据 UserInfo user = new UserInfo(); while (reader.Read()) { user.userName = reader.GetString(0); user.password = reader.GetString(1); } return user; } } } }
U层代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; using Login.BLL; using Login.Model; namespace LoginUI { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnLogin_Click(object sender, EventArgs e) { LoginManager mgr = new LoginManager(); //实例化B层的类 string userName = txtUserName.Text.Trim(); string Password = txtPassword.Text; UserInfo user = mgr.UserLogin(userName, Password); //将user信息传递给B层 MessageBox.Show("登陆用户:" + userName); } } }
实体层代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Login.Model { public class UserInfo { public string userName; public string UserName { get { return userName; } set { userName = value; } } public string password; public string PassWord { get { return password; } set { password = value; } } } }
以上是我对“三层实例”的真是实现,如有不妥之处,还请指教。