浪漫骑士必胜

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  145 随笔 :: 2 文章 :: 574 评论 :: 33万 阅读

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

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

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

 

一、三层架构图

 

二、两个案例的流程图

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

 

三、建好界面层

 

四、建好的三层

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层

 

作者近期文章列表:

 

posted on   小事好  阅读(2819)  评论(7编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示