文档介绍:第十一章
使用三层结构开发数据库应用系统
目标
使用三层结构开发项目
体会到使用三层结构开发的优势
为什么需要三层结构
服务员只管接待客人
厨师只管烹炒客人要的美食
采购员只管按客人需求采购肉,海鲜,蔬菜
他们各负其责共同协作为客人提供美食
顾客
服务员
厨师
采购员
饭店
服务员
厨师
采购员
为什么需要三层结构
离职、请假
其他服
务员代替
离职、请假
离职、请假
其他厨
师代替
其他采
购员代替
服务员
厨师
采购员
为什么需要三层结构
三层结构软件模型
表示层
业务逻辑层
数据访问层
软件
系统
饭店
为什么需要三层结构
:登录实现部分(LoginForm类)代码
我们从三方面对登录实现部分代码进行分析
1、界面控件数据绑定实现
2、逻辑判断实现
3、数据库访问实现
首先我们看一下界面部分的关键代码
为什么需要三层结构
// 登录
private void btnLogIn_Click(object sender, EventArgs e)
{
//……………..
if (ValidateInput())
{
// 调用用户验证方法
isValidUser = ValidateUser(, , , ref message);
// 如果是合法用户,显示相应的窗体
//………………..
}
}
界面层实现
为什么需要三层结构
public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message)
{
int count = 0; // 数据库查询的结果
bool result = false; // 返回值,是否找到该用户
// 查询是否存在匹配的用户名和密码
if (loginType== “管理员”) // 判断是否是管理员用户
{
//数据访问实现代码………………….
}
else if (loginType == "学员")
{
//数据访问实现代码…………………..
}
return result;
}
逻辑判
断实现
用户登录实现方法
为什么需要三层结构
public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message)
{
//…………………….
// 查询是否存在匹配的用户名和密码
// 查询用sql语句
string sql = (
"SELECT COUNT(*) FROM Admin WHERE LogInId='{0}' AND LogInPwd='{1}'",
);
//……….
// 查询用sql语句
string sql = (
"SELECT COUNT(*) FROM Student WHERE LogInId='{0}' AND LogInPwd='{1}'",txtLogInId, txtLogInPwd);
}
管理员信息数据访问
用户登录实现方法
通过分析我们得到结论是?
学员信息数据访问
为什么需要三层结构
1、数据库访问和用户类型判断逻辑放在一起实现
2、用户界面层直接调用数据访问实现
3、整个系统功能放在同一项目中实现
结论是:
从结论可知,我们开发的两层结构应用系统有哪些局限性?