浪漫骑士必胜

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

三层相关案例(及常见的错误)

 今天我们再次带领大家学习三层的知识,由于三层这块的内容在工作中用的比较的多.所以,我再把登录验证密码的题目做一遍.题目中没有了验证用户是否存在.

  先回顾一下上次我们给大家看的两个图:

 

一、三层架构图

 

二、两个案例的流程图

  今天我们建三个项目,这个方便我们看清三层。

 

三、建好界面层

 

四、建好的三层

SqlHelper是操作数据库的,和数据库有关,在数据访问层。添加一个引用。

我们把配置文件也先放在数据访问层里面。将配置文件中的相关信息改好。

 

下面我们还是先画下界面层的界面。

 

五、画好界面层

下面的步骤我们再复习一下:

  1. 根据需求分析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基础一

 

posted on 2012-10-16 22:29  小事好  阅读(2800)  评论(7编辑  收藏  举报