




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C#程序设计 主编 杨克玉 阮进军 第八章 三层架构的ADO.NET数据库编程 本章任务 能够理解和掌握三层架构中每层的功能和各层之间的逻辑关系 能够搭建三层架构软件开发框架 能基于三层架构实现数据增、删、改、查操作 能使用OOP思想实现三层架构 任务任务8.1 8.1 “ “学生信息管理系统学生信息管理系统”项目项目 搭建三层架构开发框架搭建三层架构开发框架 在Visual Studio2008中创建“学生信息管理系统”项 目的解决方案。在解决方案中分别建立UI层项目、BLL 层类库项目和DAL层类库项目,并添加各层之间的依赖关 系,完成三层架构开发框架的搭建。 分四步实现三层架构的设计 1
2、、搭建表示层 2、搭建业务逻辑层 3、搭建数据访问层 4、建立各层间的依赖关系 任务任务8.1 8.1 “ “学生信息管理系统学生信息管理系统”项目项目 搭建三层架构开发框架搭建三层架构开发框架 搭建表示层 在Visual Studio2008的IDE开发环境中,选择“文件”“新建”“项目”命令, 创建一个新项目,在弹出的“新建项目”对话框中选择项目类型为“Visual C#”,模 板为“Windows应用程序”,填写项目名称为“StudentInfo”,同时在“解决方案” 下拉列表框中选择“创建解决方案”,并选择 “创建解决方案的目录”复选框,如图 所示 搭建业务逻辑层 在Visual St
3、udio2008的IDE开发环境中,选择“文件”“新建”“项目”命 令,在弹出的“新建项目”对话框中选择项目类型为“Visual C#”,模板为“类库”, 填写项目名称为“StudentInfoBLL”,同时在“解决方案”下拉列表框中选择“添入 解决方案”,如图所示 搭建数据访问层及建立各层依赖关系 创建数据访问层的步骤与创建业务逻辑层类似,只是需要重新填写项目名称为 “StudentInfoDAL”,其它的操作步骤和选项与创建业务逻辑层完全一样。 在“解决方案资源管理器”中,右键单击表示层(StudentInfo项目)的“引用”, 选择“添加引用”命令,在弹出的“添加引用”对话框中选择“项目
4、”选项卡,选中项 目名称“StudentInfoBLL”,单击“确定”,如图所示。在建立了表示层对业务逻辑 层的引用后,在表示层的引用目录下就会出现业务逻辑层项目的名称,如图所示。 使用三层架构的意义 我们可以通过到电器商城购物这一生活中的场景来理解三层架构在软件开发中的优势。 这里可以把电器商城看作一个整体,它包括商品导购员、收银员和仓库管理员三类角色。 当一名顾客到超市购买商品时,商城将以如下的流程为顾客提供服务: (1)导购员接待顾客,根据顾客要求购买商品的型号填写单据,然后将填写好的单据交给 收银员; (2)收银员根据导购员的单据向顾客收取相应的费用,打印出货单,然后将出货单交给仓 库
5、管理员申请出货; (3)仓库管理员根据收银员提交的出货单从仓库对应的商品存放位置,取出货物交给导购 员,然后导购员将商品交给客户。 三层间的依赖关系 微软推荐的三层式结构,从下至上分别为:数据访问层、业务逻辑层和表示层,各层 之间相互依赖,相互协作来实现软件的各项功能,其体系结构如左图所示,三层之间的 依赖关系和数据传递方向如右图所示。 基于三层架构实现数据增删改查 在三层架构下实现对数据库中数据的访问和操作,可以使用ADO.Net来实现。表 示层将用户输入的数据或数据查询请求发送给业务逻辑层,业务逻辑层对用户的输入 数据进行校验和处理,然后将数据发送给数据访问层,由数据访问层通过Sql语句或
6、 调用数据库的存储过程来实现数据的操作,并将操作结果以DataSet、DataTalbe 或DataReader等数据集的方式返回给业务逻辑层,当业务逻辑层收到响应的数据集 后,根据用户的要求(如筛选条件或业务规则)对数据集中的数据进行处理,然后把 处理后的数据集返回给表示层,最后由表示层的后台代码对数据集进行解析,显示在 窗体相应的数据显示控件上,整个过程如图所示 任务任务8.2 8.2 “ “学生信息管理系统学生信息管理系统”项目项目 用三层架构实现学生信息查询用三层架构实现学生信息查询 设计“学生信息管理系统”窗体的主界面。用户可以在工具栏的下拉列表框中选择 查询条件是按学号查询还是按姓
7、名查询,在文本框中输入相应的信息后,点击“查找” 按钮,在数据库中查询满足条件的数据,并显示在窗体上的DataGridView控件上。如 果未设置查询条件,则返回数据库中所有学生的信息 任务任务8.2.1 8.2.1 “ “学生信息管理系统学生信息管理系统”项目项目 用三层架构实现学生信息查询用三层架构实现学生信息查询 使用三层架构开发应用系统时,首先应根据需求设计表示层的用户界面, 然后对系统需要实现的功能进行认真分析,根据功能需求先设计规划数据访问 层的类及相应的方法,再设计业务逻辑层的类,最后完成表示层后台代码。根 据本节任务的功能需求,在数据访问层我们设计一个用于对数据库中表 Stud
8、entInfo操作的类StudentInfoDB,并为该类设计三个方法: GetStuInfoByStuId、GetStuInfoByName和GetStuInfoList,分别 用于实现按学号查询、按姓名查询和返回所有学生信息三个功能,其返回值类 型均为DataTable。在业务逻辑层设计类StuInfoManager为数据访问提 供服务,并为其设计方法GetStuInfo,方法的参数与返回值类型如下: DataTable GetStuInfo(string condition, string keywords),其中 condition为查询条件,keywords为查询条件的值。整个功能实
9、现的时序 图如图所示。 搭建框架、添加窗体 按任务8.1的方法搭建StudentInfo项目的三层开发框架,建立三层间的依赖关系, 在表示层项目中添加窗体frmStuAdmin,向窗体中添加控件、设计工具栏,窗体控件 及布局如图所示 数据访问层代码回顾 DBHelper.cs 由于在数据访问层会经常频繁的访问数据库,如果每次访问数据库都创建 SqlConnection、SqlCommand等一系列对象,这样会使代码变得非常冗余,为了 提高代码的复用率,在使用三层架构开发应用系统时,通常在数据访问层创建一个静态 类,在这个静态类中编写获取连接对象、执行Sql语句等一系列静态方法。在数据访问层 需
10、要访问数据库时,通过调用这些方法来获取相应对象或执行相应操作,这样不仅可减 少代码的书写量,同时还可以降低数据访问层和业务逻辑层之间的耦合度 业务逻辑层代码设计 业务逻辑层的主要功能是为数据在表示层和数据访问层之间传递数据,根据前面任 务分析中所述,我们需要在业务逻辑层项目中创建一个类,命名为 “StuInfoManager.cs”,由于业务逻辑层的类需要调用数据访问层的类,因此在业务 逻辑层的每个类的代码中都要引入数据访问层的命名空间,同时还要在该层的每个类中 实例化一个数据访问层对应类的对象,以方便通过对象来调用数据访问层类的方法。由 于StuInfoManager.cs类中的GetStu
11、Info方法需要完成带条件和不带条件两种类型 的数据查询,因此需要根据不同的执行参数定义该方法的重载。 表示层数据绑定 private void StuAdmin_Load(object sender, EventArgs e)private void StuAdmin_Load(object sender, EventArgs e) / /调用调用BindGdvStu()BindGdvStu()方法绑定方法绑定DataGridViewDataGridView控件数据控件数据 this.BindGdvStu();this.BindGdvStu(); / /隐藏隐藏DataGridViewDat
12、aGridView控件显示数据的第控件显示数据的第1 1和第和第1010列,既学生信息的序号和备注字段;列,既学生信息的序号和备注字段; this.dgvStuInfo.Columns0.Visible = false;this.dgvStuInfo.Columns0.Visible = false; this.dgvStuInfo.Columns10.Visible = false;this.dgvStuInfo.Columns10.Visible = false; / /设置窗体中的系部和班级的设置窗体中的系部和班级的ComboBoxComboBox控件的索引控件的索引 this.cboD
13、epartName.SelectedIndex = 0;this.cboDepartName.SelectedIndex = 0; his.cboClassName.SelectedIndex = 0;his.cboClassName.SelectedIndex = 0; 任务8.2.2 “学生信息管理系统”项目 用三层架构实现学生信息管理 任务8.2.2 “学生信息管理系统”项目 用三层架构实现学生信息管理 在任务8.2.1中,我们已经设计了数据访问层类StuInfoDB.cs和业务逻辑层类 StuManager.cs,要实现本节任务目标,我们只需要在现有的类中添加相应的方 法即可。对于数据
14、的添加、修改和删除,我们需要在数据访问层设计AddStuInfo、 UpdateStuInfo和DeleteStuInfo三个方法分别来实现相应的功能。为了在表示 层和数据访问层之间传递数据,我们还需要在业务逻辑层也添加相应的方法来提供 支持。为了提高数据访问的效率和安全性,在使用三层架构开发应用程序时,一般 是通过调用数据库相应功能的存储过程来实现数据的增加、修改和删除。整个功能 实现的时序图如图所示 任务8.3 “学生信息管理系统”项目 使用实体类层实现三层架构 在任务中使用实体类层重新改写业务层和数据访问层方法,首先将表示层各控件 中输入的信息封装到一个学生实体类对象中,然后在业务逻辑层和数据访问层使用 学生类实体对象来实现数据的传递,功能实现的时序图如图所示 实体类 所谓的实体类就是描
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 税收筹划承兑担保补充合同
- 家电更换质保服务协议书
- 国际化股权并购项目合作协议书
- 地铁BIM运维模型交付与后期维护及验收标准合同
- 知识产权代理合伙人知识产权保护技术合作协议
- 高效能固态电池生产线投资合作股权协议
- 数据中心IT设备运维与升级服务合同
- 离婚纠纷中游戏账号分割及权益分配协议
- 医疗健康产业投资合规性审查与风险管理服务合同
- 复合材料生产流程优化与改进合同
- 跟着音乐游中国智慧树知到期末考试答案章节答案2024年广州大学
- 传统文化醒狮模板
- 小区彩钢棚顶维修合同范本
- 蓝色海洋智慧树知到期末考试答案章节答案2024年大连海洋大学
- 教科版四年级上册科学第一单元《声音》测试卷附答案(精练)
- FZT 64056-2015 洁净室用擦拭布
- 预应力筋用锚具、夹具和连接器应用技术规程JGJ85-2010
- 家长会课件:八年级下学期期中家长会课件
- 酿酒师操作工培训教材酒类生产与酿造技术实操指南
- 铁路外部环境安全隐患排查整治指导手册
- 小学数学五年级下册通分练习100题附答案
评论
0/150
提交评论