C#程序设计课件第8章 三层架构的ADO.NET数据库编程_第1页
C#程序设计课件第8章 三层架构的ADO.NET数据库编程_第2页
C#程序设计课件第8章 三层架构的ADO.NET数据库编程_第3页
C#程序设计课件第8章 三层架构的ADO.NET数据库编程_第4页
C#程序设计课件第8章 三层架构的ADO.NET数据库编程_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章三层架构的ADO.NET数据库编程本章任务能够理解和掌握三层架构中每层的功能和各层之间的逻辑关系能够搭建三层架构软件开发框架能基于三层架构实现数据增、删、改、查操作能使用OOP思想实现三层架构任务8.1“学生信息管理系统”项目

——搭建三层架构开发框架在VisualStudio2008中创建“学生信息管理系统”项目的解决方案。在解决方案中分别建立UI层项目、BLL层类库项目和DAL层类库项目,并添加各层之间的依赖关系,完成三层架构开发框架的搭建。分四步实现三层架构的设计

1、搭建表示层2、搭建业务逻辑层3、搭建数据访问层4、建立各层间的依赖关系任务8.1“学生信息管理系统”项目

——搭建三层架构开发框架搭建表示层在VisualStudio2008的IDE开发环境中,选择“文件”→“新建”→“项目”命令,创建一个新项目,在弹出的“新建项目”对话框中选择项目类型为“VisualC#”,模板为“Windows应用程序”,填写项目名称为“StudentInfo”,同时在“解决方案”下拉列表框中选择“创建解决方案”,并选择“创建解决方案的目录”复选框,如图所示搭建业务逻辑层在VisualStudio2008的IDE开发环境中,选择“文件”→“新建”→“项目”命令,在弹出的“新建项目”对话框中选择项目类型为“VisualC#”,模板为“类库”,填写项目名称为“StudentInfoBLL”,同时在“解决方案”下拉列表框中选择“添入解决方案”,如图所示搭建数据访问层及建立各层依赖关系创建数据访问层的步骤与创建业务逻辑层类似,只是需要重新填写项目名称为“StudentInfoDAL”,其它的操作步骤和选项与创建业务逻辑层完全一样。在“解决方案资源管理器”中,右键单击表示层(StudentInfo项目)的“引用”,选择“添加引用”命令,在弹出的“添加引用”对话框中选择“项目”选项卡,选中项目名称“StudentInfoBLL”,单击“确定”,如图所示。在建立了表示层对业务逻辑层的引用后,在表示层的引用目录下就会出现业务逻辑层项目的名称,如图所示。使用三层架构的意义我们可以通过到电器商城购物这一生活中的场景来理解三层架构在软件开发中的优势。这里可以把电器商城看作一个整体,它包括商品导购员、收银员和仓库管理员三类角色。当一名顾客到超市购买商品时,商城将以如下的流程为顾客提供服务:(1)导购员接待顾客,根据顾客要求购买商品的型号填写单据,然后将填写好的单据交给收银员;(2)收银员根据导购员的单据向顾客收取相应的费用,打印出货单,然后将出货单交给仓库管理员申请出货;(3)仓库管理员根据收银员提交的出货单从仓库对应的商品存放位置,取出货物交给导购员,然后导购员将商品交给客户。三层间的依赖关系微软推荐的三层式结构,从下至上分别为:数据访问层、业务逻辑层和表示层,各层之间相互依赖,相互协作来实现软件的各项功能,其体系结构如左图所示,三层之间的依赖关系和数据传递方向如右图所示。基于三层架构实现数据增删改查在三层架构下实现对数据库中数据的访问和操作,可以使用ADO.Net来实现。表示层将用户输入的数据或数据查询请求发送给业务逻辑层,业务逻辑层对用户的输入数据进行校验和处理,然后将数据发送给数据访问层,由数据访问层通过Sql语句或调用数据库的存储过程来实现数据的操作,并将操作结果以DataSet、DataTalbe或DataReader等数据集的方式返回给业务逻辑层,当业务逻辑层收到响应的数据集后,根据用户的要求(如筛选条件或业务规则)对数据集中的数据进行处理,然后把处理后的数据集返回给表示层,最后由表示层的后台代码对数据集进行解析,显示在窗体相应的数据显示控件上,整个过程如图所示任务8.2“学生信息管理系统”项目

——用三层架构实现学生信息查询设计“学生信息管理系统”窗体的主界面。用户可以在工具栏的下拉列表框中选择查询条件是按学号查询还是按姓名查询,在文本框中输入相应的信息后,点击“查找”按钮,在数据库中查询满足条件的数据,并显示在窗体上的DataGridView控件上。如果未设置查询条件,则返回数据库中所有学生的信息任务8.2.1“学生信息管理系统”项目

——用三层架构实现学生信息查询使用三层架构开发应用系统时,首先应根据需求设计表示层的用户界面,然后对系统需要实现的功能进行认真分析,根据功能需求先设计规划数据访问层的类及相应的方法,再设计业务逻辑层的类,最后完成表示层后台代码。根据本节任务的功能需求,在数据访问层我们设计一个用于对数据库中表StudentInfo操作的类StudentInfoDB,并为该类设计三个方法:GetStuInfoByStuId、GetStuInfoByName和GetStuInfoList,分别用于实现按学号查询、按姓名查询和返回所有学生信息三个功能,其返回值类型均为DataTable。在业务逻辑层设计类StuInfoManager为数据访问提供服务,并为其设计方法GetStuInfo,方法的参数与返回值类型如下:DataTableGetStuInfo(stringcondition,stringkeywords),其中condition为查询条件,keywords为查询条件的值。整个功能实现的时序图如图所示。

搭建框架、添加窗体按任务8.1的方法搭建StudentInfo项目的三层开发框架,建立三层间的依赖关系,在表示层项目中添加窗体frmStuAdmin,向窗体中添加控件、设计工具栏,窗体控件及布局如图所示数据访问层代码回顾

——DBHelper.cs由于在数据访问层会经常频繁的访问数据库,如果每次访问数据库都创建SqlConnection、SqlCommand等一系列对象,这样会使代码变得非常冗余,为了提高代码的复用率,在使用三层架构开发应用系统时,通常在数据访问层创建一个静态类,在这个静态类中编写获取连接对象、执行Sql语句等一系列静态方法。在数据访问层需要访问数据库时,通过调用这些方法来获取相应对象或执行相应操作,这样不仅可减少代码的书写量,同时还可以降低数据访问层和业务逻辑层之间的耦合度业务逻辑层代码设计业务逻辑层的主要功能是为数据在表示层和数据访问层之间传递数据,根据前面任务分析中所述,我们需要在业务逻辑层项目中创建一个类,命名为“StuInfoManager.cs”,由于业务逻辑层的类需要调用数据访问层的类,因此在业务逻辑层的每个类的代码中都要引入数据访问层的命名空间,同时还要在该层的每个类中实例化一个数据访问层对应类的对象,以方便通过对象来调用数据访问层类的方法。由于StuInfoManager.cs类中的GetStuInfo方法需要完成带条件和不带条件两种类型的数据查询,因此需要根据不同的执行参数定义该方法的重载。表示层数据绑定privatevoidStuAdmin_Load(objectsender,EventArgse){//调用BindGdvStu()方法绑定DataGridView控件数据this.BindGdvStu();//隐藏DataGridView控件显示数据的第1和第10列,既学生信息的序号和备注字段;this.dgvStuInfo.Columns[0].Visible=false;this.dgvStuInfo.Columns[10].Visible=false;//设置窗体中的系部和班级的ComboBox控件的索引this.cboDepartName.SelectedIndex=0;his.cboClassName.SelectedIndex=0;}任务8.2.2“学生信息管理系统”项目

——用三层架构实现学生信息管理任务8.2.2“学生信息管理系统”项目

——用三层架构实现学生信息管理在任务8.2.1中,我们已经设计了数据访问层类StuInfoDB.cs和业务逻辑层类StuManager.cs,要实现本节任务目标,我们只需要在现有的类中添加相应的方法即可。对于数据的添加、修改和删除,我们需要在数据访问层设计AddStuInfo、UpdateStuInfo和DeleteStuInfo三个方法分别来实现相应的功能。为了在表示层和数据访问层之间传递数据,我们还需要在业务逻辑层也添加相应的方法来提供支持。为了提高数据访问的效率和安全性,在使用三层架构开发应用程序时,一般是通过调用数据库相应功能的存储过程来实现数据的增加、修改和删除。整个功能实现的时序图如图所示任务8.3“学生信息管理系统”项目

——使用实体类层实现三层架构在任务中使用实体类层重新改写业务层和数据访问层方法,首先将表示层各控件中输入的信息封装到一个学生实体类对象中,然后在业务逻辑层和数据访问层使用学生类实体对象来实现数据的传递,功能实现的时序图如图所示实体类所谓的实体类就是描述一个业务实体的类,业务实体就是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论