Hello!

三层架构

三层架构分为:表现层(UI(User Interface))、业务逻辑层(BLL(Business Logic Layer))、数据访问层(DAL(Data Access Layer))再加上实体类库(Model)

1、实体类库(Model),主要存放数据库中的表字段。

操作:

(1)先建立实体类库Model,打开项目,在解决方案中右键——>添加——>新建项目——>选中类库——>改名Model——>确定

(2)选中Model类库——>Shift+ALT+C——>建立实体类。UserInfo类

  1. namespace Model
  2. {
  3. public class UserInfo
  4. {
  5. public string UserName { get; set; }
  6. public string Password { get; set; }
  7. }
  8. }

2、数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作

 

操作:

 

(1)先建立数据访问层类库DAL,打开项目,在解决方案中右键——>添加——>新建项目——>选中类库——>改名DAL——>确定

(2)在DAL中添加对Model的引用,选中DAL--》Alt+P+R--》解决方案--》项目--》选中MOdel--》确定

(3)在DAL中添加对system.configuration的引用,选中DAL——>Alt+P+R——>程序集——>框架——>选中System.configuration——>确定

(4)建立数据访问类,选中DAL——>Shift+ALT+C——>建立数据访问类。UserDB类

  1. namespace DAL
  2. {
  3. class UserDB
  4. {
  5. private string connString = ConfigurationManager.ConnectionStrings[connString].ToString();
  6. public int AddUser(UserInfo userInfo)
  7. {
  8. //对数据库进添加一个用户操作
  9. string commandText = insert into UserInfo (userName,Password)values(@userName,@Password);
  10. SqlParameter[] paras = new SqlParameter[]
  11. {
  12. new SqlParameter (@userName,userInfo.UserName ),
  13. new SqlParameter (@Password,userInfo.Password )
  14. };
  15. return SqlHelper.ExecuteNonQuery(connString, CommandType.Text, commandText, paras);
  16. }
  17. }

3、业务逻辑层(BLL)对传送数据进行逻辑判断分折,并进行传送正确的值。

 

 

(1)先建立业务逻辑层类库BLL,打开项目,在解决方案中右键——>添加——>新建项目——>选中类库——>改名BLL——>确定

(2)在BLL中添加对Model、DAL的引用,选中BLL——>Alt+P+R——>解决方案——>项目——>选中MOdel、DAL——>确定

(3)建立业务逻辑类,选中BLL——>Shift+ALT+C——>建立业务逻辑类。LoginManager类

  1. namespace BLL
  2. {
  3. public class LoginManager
  4. {
  5. private UserDB userDB = new UserDB();
  6. public bool Add(UserInfo userInfo, out string messageStr)
  7. {
  8. messageStr = ;//返回界面层添加用户返回信息
  9. bool isSuccess = false;
  10. if (userInfo.UserName.Trim().Length != )//判断从传递来的username是否为空
  11. {
  12. if (userDB.IsEquals(userInfo))//传给DALl操作判断数据库中是否有重复值
  13. {
  14. userDB.AddUser(userInfo);//传给DAL操作增加一个新用户
  15. isSuccess = true;
  16. }
  17. else
  18. messageStr = 有相同的值;
  19. }
  20. else
  21. {
  22. messageStr = 不能为空;
  23.  
  24. }
  25. return isSuccess;//返回界面层是否添加成功
  26. }
  27. }
  28. }

4.表现层(UI)即用户界面层

 

(1)在UI中添加对Model、BLL的引用,选中UI--》Alt+P+R--》解决方案--》项目--》选中MOdel、BLL--》确定

(2)编写代码传递数据给BLL层。

  1. UserInfo userInfo;
  2. LoginManager lm = new LoginManager();
  3. private void btnAdd_Click(object sender, EventArgs e)
  4. {
  5. userInfo = new UserInfo()
  6. {
  7. UserName = txtUserName.Text.Trim(),
  8. Password = txtPassword.Text.Trim()
  9. };
  10. string messageStr = ;
  11.  
  12. if (lm.Add(userInfo, out messageStr))
  13. {
  14. MessageBox.Show(添加成功);
  15. }
  16. else
  17. {
  18. MessageBox.Show(messageStr);
  19. txtUserName.Focus();
  20. }
  21.  
  22. }
  23. }

再来说一下怎么实现如下图所示   三个表的信息显示在一个控件

想要实现下图内容  ,  首先要从学生表(Student)、从科目表(Subject)、从成绩表(StudentResult)分别拿到学生姓名、科目名、考试成绩和考试时间。

首先添加一个扩展类,这里要用到继承

  1. namespace Combox.Model
  2. {
  3. public class StudentExtens:Student
  4. {
  5. public string SubjectName { get; set; }
  6. public int StudentResult { get; set; }
  7. public DateTime ExamDate { get; set; }
  8. }
  9. }

继续DAL层

  1. public List<StudentExtens> SelectStudentResult()
  2. {
  3. //查看学生成绩
  4. List<StudentExtens> list = new List<StudentExtens>();
  5. SqlConnection con = new SqlConnection("Server=192.168.15.21;initial catalog=MySchool;uid=sa;");
  6. DataTable dt = SQLHelper.ExecuteDataTable(@"select studentname,subjectname,studentresult,examdate from student,subject,result where student.studentno=result.studentno and result.subjectid=subject.subjectid");
  7. foreach (DataRow item in dt.Rows)
  8. {
  9. StudentExtens se = new StudentExtens();
  10. se.StudentName = item["studentname"].ToString();
  11. se.SubjectName = item["subjectname"].ToString();
  12. se.StudentResult = Convert.ToInt32(item["studentresult"]);
  13. se.ExamDate = Convert.ToDateTime(item["examdate"]);
  14. list.Add(se);
  15. }
  16. return list;
  17. }

接下来是BLL层

  1. namespace Combox.BLL
  2. {
  3. public class StudentBLL
  4. {
  5. StudentDAL sd = new StudentDAL();
  6. public List<StudentExtens> SelectStudentResult()
  7. {
  8. return sd.SelectStudentResult();
  9. }
  10. }
  11. }

在UI进行调用

  1. StudentBLL sb = new StudentBLL();
  2. List<StudentExtens> list = sb.SelectStudentResult();
  3. dgvlist.DataSource = list;

亲们!到这里分层先告一段落。 感谢关注过我、正在关注我、将要关注我的朋友。一起努力加油!

     在这个弱肉强食的时代我们只能:

               狼行千里吃肉!公司里一个团队的作战能力决定你分的肉多少。

    十年、二十年以后的你,会回想起现在的你。至于那个时候的你,是否会感谢现在坐在电脑屏幕前的你,答案就在我们每一天里!

                                                                                   爱编码爱生活爱音乐爱文字爱小M

                                                                                                   16年三月的最后一天

©北京你好!

  1.  
  1.  
  1.  
  1. 作者:微冷的风
  1.  
  1. 出处:http://www.cnblogs.com/smbk/

  2. 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

C# 分层 三层架构的更多相关文章

  1. 4、传统三层架构与DDD分层架构

    4.传统三层架构与DDD分层架构 模型是抽象的 现实是形象的 技巧是重要的 思想是永恒的 从传统三层架构与DDD分层架构的编程演变其实是思想的演变. 传统三层架构,即用户界面层UI.业务逻辑层BAL. ...

  2. 关于三层架构与MVC的一些理解

    刚毕业的时候,参与了一个上位机的系统开发.上位机所使用的是.net Windows Form技术. 当时,和一个北理的姑娘在一个项目组里.因为她来公司时间比较长,而且经验比较丰富,所以,上位机的架构由 ...

  3. 【转】浅谈MVC与三层架构

    首先给大家引入下MVC的概念: MVC(Model View Controller)模型.视图以及控制器,它是一种较为广泛应用的结构设计模式. 模型:就是在MVC设计模式中需要被显示的数据.在通常情况 ...

  4. 有了门面,程序会更加体面!- pos软件基于三层架构 -09

    续上篇)        大鸟说道:“实际上没有学过设计模式去理解三层架构会有失偏颇的,毕竟分层是更高一级别的模式,所谓的架构模式.不过在程序中,有意识的遵循设计原则,却也可以有效的做出好的设计.”   ...

  5. 浅析MVC模式与三层架构的区别01

    三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层)三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI ...

  6. 三层架构与MVC之间的区别

    文章转发自:http://www.admin10000.com/document/535.html 我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真 ...

  7. MVC模式与三层架构的区别

    之前总是混淆MVC表现模式和三层架构模式,为此记录下. 三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层) 三层架构(3-tier application) ...

  8. 三层架构与MVC &amp; 设计模式的较量

    刚刚学习了三层架构,并且正在实际应用中,但随着学习的深入,又了解到了一个叫MVC的东西,(早在设计模式中就听到过MVC,仅仅是简单查了一下什么意思.)如今正好把这三个东西放在一起聊聊. 三层 是一个分 ...

  9. 三层架构和MVC模式

    目录[-] 1.三层架构 2.MVC 2.1 标准的MVC(Model-View-Controller) 2.2 Web MVC 3.三层架构和MVC的区别与联系 1.三层架构 三层架构(3-tier ...

随机推荐

  1. 批量Ping IP

    刚刚接触Python 想做点什么 听说Python 在网络方便很厉害 后来总结如下: 第一:发现公司都固定IP 每次新来同事都要猜一个没有人用的IP  很费劲 第二:我们公司有的IP可以上QQ 有的不 ...

  2. 【Java】深入理解ThreadLocal

    一.前言 要理解ThreadLocal,首先必须理解线程安全.线程可以看做是一个具有一定独立功能的处理过程,它是比进程更细度的单位.当程序以单线程运行的时候,我们不需要考虑线程安全.然而当一个进程中包 ...

  3. 聊一聊google的Knowledge Graph

    什么是Knowledge Graph? 它是google用于增强它的搜索引擎的功能和提高搜索结果质量的一种技术.在2012年5月16日提出,除了提供基本的与主题相关的链接服务之外,它还能结构化与主题相 ...

  4. Ubuntu 12.10

    上海交通大学更新服务器(教育网千兆接入,联通/电信线路情况不详),包含其他开源镜像: deb http://ftp.sjtu.edu.cn/ubuntu/ quantal main multivers ...

  5. Linux curl使用简单介绍

    在两台新搬迁的微信服务器上执行命令: curl -H "Content-Type: application/json" -d '{"partner_no":&q ...

  6. 爬虫技术 -- 进阶学习(七)简单爬虫抓取示例(附c#代码)

    这是我的第一个爬虫代码...算是一份测试版的代码.大牛大神别喷... 通过给定一个初始的地址startPiont然后对网页进行捕捉,然后通过正则表达式对网址进行匹配. List<string&g ...

  7. mockito

    import org.junit.Assert;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWit ...

  8. AEM - Adobe CMS 扒坑记之始

    AEM是Adobe公司所出的商业内容管理系统,全称阿豆比体验管理系统(Adobe Experience Manager),其前身叫CQ,分别有CQ5 CQ6两个大版本.它提供了整套的网站内容管理系统解 ...

  9. 网站跨站点单点登录实现--cookie

    至于什么是单点登录,举个例子,如果你登录了msn messenger,访问hotmail邮件就不用在此登录.一般单点登录都需要有一个独立的登录站点,一般具有独立的域名,专门的进行注册,登录,注销等操作 ...

  10. Socket.IO 1.0 正式发布,快速可靠的实时引擎

    Socket.IO 是目前 Web 领域最火的实时引擎,用于实现基于事件的双向实时的通信.它适用于任何平台,浏览器或设备,专注于可靠性和速度.您可以将数据推送到客户端,并获得实时的计数,日志或图表. ...