在上一篇文章介绍了三层,现在重点介绍一下三层是如何实现的
一、总述
这个例子有两个功能:登录、登录一次给积分
例子中有U层(Presentation Layer)、B层(Business Layer)、D层(Data Access Layer)和实体层组成,
它们之间调用关系如下
实体层在这里的作用是存储用户登录的信息,使用的是属性访问器
二、代码
在用三层的时候一般是从D层开始实现,所以我们也从D层开始介绍
在D层之前先看一下实体层的代码
1.D层,对数据库的操作
首先,D层需要调用数据库,所以添加一个类DBUtil,定义一个全局变量存储连接数据库的语句
根据从B层传过来的用户名和密码,从数据库中查询,也就是UserDAO类
D层中,用户登录时增加积分功能
2.B层,既要把U层的数据传给D层,又要根据D层返回来的数据做判断再返回U层,责任重大
3.U层,用户输入的数据和最终要现实的数据
从上边的小例子中可以看出,每层都用到了实体层,而且上层都需要调用下层的方法
我们按照数据传输的方式想一下:用户输入用户名和密码,然后利用U层中的UserLogin方法把用户名和密
码传给B层,B层把用户名和密码传给D层,并调用D层的SelectUser方法,D层根据传入的用户名和密码在数据
库中查询信息,当用户名和密码都正确的时候,把数据库中的信息传递给实体层实例化的对象,然后B层继续
调用D层的UpdateScore方法,更新数据库,更新成功后B层再把D层中返回的信息传给U层,这时U层就可以显
示信息了;当用户名和密码不正确的时候会在B层提示错误信息
三、小知识
1.上边带有问号的第一张图片:属性访问器,图中的写法和我们平时的写法不一样,为什么?
当我们只需要获得和存取值的时候两种方法都是一样的,没区别,但是当我们需要对获取的值进行判断时
仅仅用{get;set;}就不可以了,必须写全
2.第二张带有问号的图片,为什么要多次一举?
图中的方式是传参,是防止Sql注入的方法;原理是把查询语句与控制语句分开
3.对数据库中的数据操作时使用的是,ADO.net
Connection建立连接
Command执行操作
DataReader读数据
DataTable数据网格控件,一般在DataSet中使用
DataSet记录集,数据库表中部分数据的映射
DataAdapter数据适配器,实现DataSet与数据源的交互
小结
在初次学习三层的时候一定要多用单步调式,这样可以更加清楚的了解三层的结构原理和数据的传输
在视频例子的基础上再用传实体,加设计模式的方式多多练习,可以对三层有更好的理解
每次学习结束后都要做做总结,回顾一下自己学习的知识,效果很不错的