三层模式:
举一个简单的例子:顾客去饭店吃饭
顾客去饭店吃饭,需要知道吃什么。饭店里面的服务员提供菜单,并且接收顾客点菜的信息,服务员收到点菜信息将此信息传递到后厨,大厨对点菜信息进行处理,需要什么食材等。知道需要什么食材之后,大厨将信息传给后勤的买食材的工作人员,买食材的人通过大厨所给的菜单到菜市场去买所需要的食材,将买来的食材给后厨,让大厨进行处理。大厨做好菜后,通知服务员上菜。但是在点菜的时候,服务员需要告诉顾客有没有这道菜。
我们可以类比一下C/S模式:
1.顾客------------------UI可视端(用户可以看到的界面)
2.服务员---------------模型层(传递数据的载体)
3.厨房大厨------------业务逻辑层(对UI前端和数据库传输来的数据进行处理并且对UI前端进行返回)
4.后勤部买菜---------数据访问层(对数据库的信息进行查找,并且返回给业务逻辑层)
UI可视端:
namespace DemoUI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
//txtName.Text
UserInfor userinfor = new UserInfor();
userinfor.UserLoginName = txtName.Text;
userinfor.UserLoinPwd = txtPwd.Text;
string msg;
UserInforManager manager = new UserInforManager();
bool flag = manager.Login(userinfor, out msg);
if(! flag)
{
MessageBox.Show(msg);
}
else
{
MessageBox.Show("登录成功!");
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
模型层:
namespace DemoModel
{
/// <summary>
/// 实体类
/// </summary>
[Serializable()]
public class UserInfor
{
public int UserId
{
get;
set;
}
public string UserLoginName
{
get;
set;
}
public string UserLoinPwd
{
get;
set;
}
public string UserName
{
get;
set;
}
public int JobId
{
get;
set;
}
}
业务逻辑层:
namespace DemoBLL
{
/// <summary>
/// 业务逻辑层
/// </summary>
public class UserInforManager
{
/// <summary>
/// 根据用户信息登录并获取用错误信息
/// </summary>
/// <param name="userinfor"></param>
/// <param name="message"></param>
/// <returns></returns>
public bool Login(UserInfor userinfor,out string message)
{
bool flag = true;
message = null;
UserInforService us = new UserInforService();
UserInfor user = us.GetUserByLoginName(userinfor.UserLoginName);
if(user == null)
{
message = "账号错误!";
flag = false;
}
else
{
if(user.UserLoinPwd != userinfor.UserLoinPwd)
{
message = "密码错误!";
flag = false;
}
}
return flag;
}
}
}
数据访问层:
public class UserInforService
{
/// <summary>
/// 根据登录账号获取用户信息
/// </summary>
/// <param name="loginName">登录账号</param>
/// <returns>用户信息</returns>
public UserInfor GetUserByLoginName(string loginName)
{
UserInfor userinfor = null;
string strCon = "server=.;database=RoleDemo;uid=sa;pwd=sa.;";
string strSql = "select UserId,UserLoginName,UserLoinPwd,UserName,JobId"
+ " from tblUser"
+ " where UserLoginName = '" + loginName + "'";
SqlConnection con = new SqlConnection();
con.ConnectionString = strCon;
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = strSql;
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
userinfor = new UserInfor();
userinfor.UserId = dr.GetInt32(0);
userinfor.UserLoginName = dr.GetString(1);
userinfor.UserLoinPwd = dr.GetString(2);
userinfor.UserName = dr.GetString(3);
userinfor.JobId = dr.GetInt32(4);
}
dr.Close();
con.Close();
return userinfor;
}
}
}