三层相关案例(及常见的错误)
今天我们再次带领大家学习三层的知识,由于三层这块的内容在工作中用的比较的多.所以,我再把登录验证密码的题目做一遍.题目中没有了验证用户是否存在.
先回顾一下上次我们给大家看的两个图:
一、三层架构图
二、两个案例的流程图
今天我们建三个项目,这个方便我们看清三层。
三、建好界面层
四、建好的三层
SqlHelper是操作数据库的,和数据库有关,在数据访问层。添加一个引用。
我们把配置文件也先放在数据访问层里面。将配置文件中的相关信息改好。
下面我们还是先画下界面层的界面。
五、画好界面层
下面的步骤我们再复习一下:
- 根据需求分析Sql语句
selectcount(*)fromT_SeatswhereCC_LoginId=@uidandCC_LoginPassword=@pwd
当登录成功之后,第一在窗体的上方显示欢迎xxx,第二要记住登录的主键Id。
查主键Id和真实姓名。
selectcc_autoId,cc_userNamefromT_SeatswhereCC_LoginId=@uidandCC_LoginPassword=@pwd
2. 数据访问层
想一下执行第一条Sql语句需要调什么方法?
执行第二条Sql语句需要调什么方法?
确定下数据访问层的类。
六、验证登录是否成功方法的代码
七、写好model
八、写好数据访问层的代码
3.确定BLL业务逻辑层
九、创建好类,添加引用,写好MD5
十、写好业务逻辑层
十一、添加两个引用,写好存数据的类,及代码
十二、写好界面层的代码
调试的时候出现错误,大家也来想一想哪儿出现了错误呢?
表明SqlHelper中读取字符串出现错误。
查了之后,还没有读到这,那可能就是配置文件的问题。
刚才我们把配置文件放在了数据访问层,为什么不能放在数据访问层呢?
十三、系统报错,及修改思路
另外,如果不想在界面层做一堆的逻辑判断的话,把我们刚在里面写的逻辑判断,再封装成一个方法。
确定BLL业务逻辑层:根据需求确定需要几个方法,以及每个方法的参数与返回值等。
十四、把登录成功的用户名显示到窗口的左上角
下面我们做下修改密码,修改密码跟用户登录思路差不多.也是确定SQL语句,数据访问层,业务逻辑层,写好界面层.
十五、修改密码界面层一
十六、修改密码界面层二
十七、显示修改密码按钮及弹出第二个窗体
好了,现在我们想下修改密码我们用到了哪些SQL语句?
一条是:判断旧密码是否正确。
一条是:修改新密码。
//验证旧密码的sql
select count(*) from T_Seats where CC_AutoId= @autoId and
CC_loginPassword= @oldPwd
//执行修改密码
update T_Seats set CC_LoginPassword = @newpwd where cc_autold= @autold
有了这两个SQl语句,我们该写数据访问层那两个方法了。
十八、验证旧密码,修改密码数据访问层代码
数据访问层写好,我们就改写业务逻辑层了。业务逻辑层有什么的方法取决于现在的需求。
验证新密码是否一致,旧密码是否正确,确定它修改是否成功。封装一个方法,最后根据需求返回不同的值。
十九、写好业务逻辑层
接着我们在界面层调用一下。
二十、最后写好界面层的代码
二十一、校验程序
接下来我们说下用三层完成递归加载,和递归删除
为了方便我还是建在同一个应用程序里面。
还是写三层的步骤,现在要实现递归加载需要什么样的SQL语句。
根据父Id获取子类别,接下来写数据访问层。
单独建个表
二十二、递归加载准备工作
二十三、储存数据的model类
二十四、数据访问层的方法
要做递归加载就用到这么一个数据库的操作方法。接下来写业务逻辑层的方法,这个时候业务逻辑层没有什么逻辑处理的工作,就是拿到数据就行了,就是个打酱油的。
二十五、递归加载的两种写法
二十六、业务逻辑层用紧耦合的方法
二十七、把递归加载写到业务逻辑层中
二十八、最后改下配置文件和启动窗体
二十九、递归加载结果演示
这样写行不行?合适不合适?
不合适,为什么呢?在业务逻辑层用到了窗体中的类。当我把界面换成web之后,业务逻辑层中用的就不是这些了。
这个逻辑应该写到界面层,作为界面层的逻辑。
上面的写法是专门为windows窗体写的逻辑,紧耦合。
要是一个字符串的话,就是松耦合。因为任何的程序都有。
三十、在界面层的代码
下面我们做下删除节点,极其子节点:
大家还是想一下,当我点击按钮之后执行什么样的SQL语句。
还是先写数据访问层:
三十一、删除-数据访问层代码
三十二、删除-业务逻辑层代码
三十三、删除-界面层
三十四、怎么拿到bll层
作者近期文章列表:
C#基础教程(完全免费,献给代码爱好者的最好礼物。注:本作者分享自己精心整理的C#基础教程,无任何商业目的。 希望与更多的代码爱好者交流心得,也请高手多多指点!!!) |
|
三层 | 三层(一) |
SQL数据库 ADO.net | 数据库的应用图解一 |
数据库的应用详解二 | |
ADO.NET(内涵效率问题) | |
面向过程,面向对象中高级 | 面向过程,面向对象的深入理解一 |
面向过程,面向对象的深入理解二 | |
面向对象的深入理解三 | |
winform基础 | Winform基础 |
winform中常用的控件 | |
面向过程 | 三种循环的比较 |
C#中的方法(上) | |
我们常见的数组 | |
面向对象 | 思想的转变 |
C#中超级好用的类 | |
C#中析构函数和命名空间的妙用 | |
C#中超级好用的字符串 | |
C#中如何快速处理字符串 | |
值类型和引用类型及其它 | |
ArrayList和HashTable妙用一 | |
ArrayList和HashTable妙用二 | |
文件管理File类 | |
多态 | |
C#中其它一些问题的小节 | |
GDI+ | 这些年我收集的GDI+代码 |
这些年我收集的GDI+代码2 | |
HTML概述以及CSS | 你不能忽视的HTML语言 |
你不能忽视的HTML语言2精编篇 | |
你不能忽视的HTML语言3 | |
CSS基本相关内容--中秋特别奉献 | |
CSS基本相关内容2 | |
JavaScript基础 | JavaScript基础一 |