数据访问层的设计与实现 PPT课件_第1页
数据访问层的设计与实现 PPT课件_第2页
数据访问层的设计与实现 PPT课件_第3页
数据访问层的设计与实现 PPT课件_第4页
数据访问层的设计与实现 PPT课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

能力目标 能够运用Visio工具绘制数据访问层定义的类图及其类间关系 能够在VS NET环境中使用C 和SQL语句编写数据访问辅助类 能够在VS NET环境中使用C 和SQL语句编写数据访问层接口及数据访问工厂接口 能够在VS NET环境中使用C 和SQL语句编写数据访问层接口的实现类 知识目标 了解ADO NET的体系结构及其接口技术 了解数据访问层的基本结构及现实意义进行分析 掌握基于Factory模式的数据访问层的设计步骤与方法 掌握数据库连接 打开 关闭以及插入 修改 删除的SQL语法 掌握C 数据绑定控件的功能及其代码编写的方法 教学目标 本项目的工作任务首先是进行数据访问层的各个子层 类 及其交互关系进行规划与设计 其次是通过对业务逻辑层接口的分析确定需要何种数据访问操作 从而确定数据访问层接口以及数据访问工厂接口 然后是编写数据访问辅助类 用于向数据实体操作子层提供数据库连接 数据库命令 事务 参数和连接字符串 最后是定义数据实体操作子层 即编写在各个数据访问层接口及数据访问工厂接口的实现类 项目简介 任务一数据访问层的规划与设计 规划与设计数据访问层的结构与类间关系是数据访问层设计与开发的首要任务 主要涉及到数据访问层的结构框架和类的定义与关系两大内容 因此 本任务主要是根据业务逻辑层的接口定义和关系数据库表 确定数据访问层中的各个数据实体操作类 接口类和辅助类 然后是根据Factory模式划分各个子层 类 及其关系 并绘制数据访问层类图 数据访问层类图结果如图6 1所示 一 任务引导 图2 1Visio2003的启动界面 任务一数据访问层的规划与设计 图6 1数据访问层类图 1 由业务逻辑确定数据访问操作 1 CartBLL需要的数据访问操作 2 MessageBLL需要的数据访问操作 3 OrderBLL需要的数据访问操作 4 ProductBLL需要的数据访问操作 5 RelayBLL需要的数据访问操作 6 Type 1BLL需要的数据访问操作 7 Type 2BLL需要的数据访问操作 8 UserinfoBLL需要的数据访问操作2 数据访问层的结构框架 1 数据访问接口子层 二 任务实施 任务一数据访问层的规划与设计 2 实体操作类子层 3 数据访问辅助类子层3 绘制数据访问层类图 1 打开Visio2003 依次选择 文件 新建 软件 UML模型图 打开 UML模型图 工作界面 2 选择 形状 面板中的 UML静态结构 选项卡 并在该选项卡中将 类 图标拖动到工作区 然后双击类图标 打开 UML类属性 对话框 如图6 3所示 3 在 UML类属性 对话框中的 名称 文 二 任务实施 任务一数据访问层的规划与设计 本框中 输入相应的类名 如输入 接口子层 中的购物车类接口名 Icart 其他选项默认 最后单击 确定 4 重复 2 3 两个步骤 依次为各个子层添加相对应的类名 5 为各个类之间添加类间关系 其中 数据访问工厂类IDALFactory与数据实体访问类之间建立依赖关系 数据接口类与数据实体访问类之间建立泛化关系 数据实体访问类与数据访问辅助类之间建立依赖关系 二 任务实施 任务一数据访问层的规划与设计 1 ADO NET数据库访问技术 1 ADO NET体系结构 三 相关知识 任务一数据访问层的规划与设计 图6 4ADO NET对象层次结构 2 NET数据提供程序 NET数据提供程序是ADO NET架构的核心组件 它使得数据源与组件 XMLWebServices以及应用程序之间可以进行通信 数据提供程序允许应用程序连接到数据源进行数据检索 更新和删除等操作 目前Microsoft NET框架中主要包含了SQLServer OLEDB ODBC Oracle以及EntityClient五种类型的 NET数据提供程序 2 Factory设计模式 1 基本原理 2 主要分类 三 相关知识 任务一数据访问层的规划与设计 2 主要分类 简单工厂模式 工厂方法模式 抽象工厂模式 工厂方法模式与抽象工厂模式的区别工厂方法模式 只能有一个抽象产品类 但可以派生出多个具体产品类 只能有一个抽象工厂类 但可以派生出多个具体工厂类 每个具体工厂类只能创建一个具体产品类的实例 抽象工厂模式 可以有多个抽象产品类 而每个抽象产品类可以派生出多个具体产品类 只能有一个抽象工厂类 但可以派生出多个具体工厂类 每个具体工厂类可以创建多个具体产品类的实例 三 相关知识 任务一数据访问层的规划与设计 四 任务拓展 通用数据访问层的设计 设计面向业务逻辑层的通用数据存储结构 设计供业务逻辑层调用的表接口 设计继承自接口的连接不同数据源的数据提取类 在配置文件中定义连接数据库的配置信息 利用factory模式实现不同数据源的调用 任务一数据访问层的规划与设计 为了实现对底层数据库连接和操作的封装 提高软件代码的可移植性与统一性 往往需要定义数据实体操作类的接口以供业务逻辑层的调用 需要定义一个数据访问工厂类接口 以实例化数据实体操作类 因此 本任务首先是根据业务逻辑所定义的操作来确定在任务一所定义各接口中的各个操作 然后是在VS NET2005中编写这类接口类的代码实现 一 任务引导 任务二数据访问接口子层的设计与实现 1 接口的定义 1 需求分析 2 接口方法定义 2 接口的编程实现 1 编写ICartDAL接口类 2 编写IMessageDAL接口类 3 编写IOrderDAL接口类 二 任务实施 任务二数据访问接口子层的设计与实现 三 相关知识 任务二数据访问接口子层的设计与实现 1 软件接口 1 接口的定义 2 接口与抽象类的区别 3 接口的定义2 命名空间 1 命名空间的基本概述 2 NETFramework类库的命名空间 基础命名空间 图形命名空间 数据命名空间 WEB命名空间 框架服务命名空间 安全性命名空间 网络命名空间 配置命名空间 本地化命名空间 任务二数据访问接口子层的设计与实现 四 任务拓展 1 编写IProductDAL接口类 参考代码见附件1 2 编写IRelayDAL接口类 参考代码见附件1 3 编写IUserinfoDAL接口类 参考代码见附件1 4 编写IType 1DAL接口类 参考代码见附件1 5 编写IType 2DAL接口类 参考代码见附件1 一 任务引导 由于业务逻辑层各个功能类模块对数据实体的访问基本类似 为减少代码量 提高代码复用性 可将一些复用的代码抽取出来 编写成助手类 因此 本任务首先是定义数据访问辅助类中的公共操作方法 如获取数据库连接字符串 获取参数对象 执行指定SQL语句不返回结果以及执行指定SQL语句返回结果等操作 然后是在VS NET2005中编写这些类操作的代码实现 任务三数据访问辅助类的设计与实现 二 任务实施 1 数据访问辅助类的定义定义数据访问辅助类 以工厂模式提供数据库连接 数据库命令 数据适配器 参数 事务等对象 对数据访问辅助类各个操作进行的定义如表6 11所示 2 辅助类的编程实现在ClothesShop主目录下 新建一个DBUtility文件夹 用于存放所有数据访问辅助类 打开VS NET 选择 文件 新建文件 命令 打开 新建文件 对话框 然后在模板列中 选择 VisualC 类 模板 单击 打开 按钮 进入 VisualC 类 模板类编程界面 然后编写代码 任务三数据访问辅助类的设计与实现 1 使用ADO NET开发数据库应用程序的步骤 根据使用的数据源 确定使用的 NETFramework数据提供程序 如使用SQLServer数据源时 则应使用System Data SqlClient命名空间 创建一个应用程序与数据库连接的链路 即通过创建一个Connection对象 建立与数据源的连接 建立对数据源的操作命令 请求一个记录集合 即通过创建一个Command对象来执行建立的SQL命令或数据存储过程 创建和配置DataAdapter对象 把请求的记录集合填充到DataSet DataTable 中 或者直接 任务三数据访问辅助类的设计与实现 三 相关知识 1 使用ADO NET开发数据库应用程序的步骤使用DataReader对象从数据库中直接检索和读取数据 根据需要 可以重复第 步 将多个数据集合填充到DataSet DataSet可以包含多个数据集合 中 当然也可以使用DataReader的read 方法通过循环语句顺序读取多条记录 关闭数据库连接 如正在使用数据适配器或SQL命令 则不必显示打开和关闭数据库连接 对DataSet上的数据集合进行必要的数据操作 如把数据集DataSet绑定到DataGrid GridView等数据控件上 最终把数据库中的数据显示在用户界面上 任务三数据访问辅助类的设计与实现 三 相关知识 2 创建数据库连接 Connection对象 所谓数据库连接就是指网络服务器上的应用程序与数据库数据源之间的连接 而创建数据库连接关键就是要指定数据库连接的字符串值 并将它存储在连接对象中 连接对象的类型根据数据库类型不同而异 如在访问SQLServer数据库时应使用SqlConnection类 前缀Sql 在访问Access或Excel时则使用OleDbConnection类 前缀OleDb 而在访问Oracle数据库时则应使用OracleConnection类 前缀Oracle 在建立连接时 通常需要通过指定连接串属性 ConnectionString 值来提供一些必要的连接信息 如数据库所在位置 数据库名称 用户账户 密码等 即通过设置Connection对象提供的常用属性 如表6 12所示 值来构建一个数据库连接字符串 并通过创建Connection对象建立链路 任务三数据访问辅助类的设计与实现 3 获取或更新数据源 Command对象 使用Command对象实现获取或更新数据源的数据库操作一般包括以下四个步骤 首先是创建SqlCommand构造函数 其次是建立SqlCommand与SqlConnection的关联 然后是设置SqlCommand的命令文本及文本类型 最后是执行SQL命令或存储过程 下面以SqlCommand对象操作数据库为例 讲述请求数据库记录集的操作方法 4 顺序读取数据 DataReader对象 使用数据阅读器 可以顺序地从查询结果集中读取记录 它的特点是单向向前 速度快 占用内存少 当前内存中每次仅存一条记录 阅读期间应保持数据连接处于打开状态 任务三数据访问辅助类的设计与实现 5 存放一组命令 DataAdapter对象 如果用户需要随机读取数据或者需要对数据进行CUD等操作时 则通常需要借助数据适配器 DataAdapter 对象和数据集 DataSet 对象来实现 A通过建立DataAdapter对象 初始化DataTable对象 从而和DataSet对象结合起来在内存中存放数据 数据适配器用于在数据源和数据集之间交换数据 在应用程序和数据库之间进行通信 并隐藏和Connection对象 Command对象的沟通细节 数据适配器可以从数据库将数据读入到数据集中 也可以将数据集中已更改数据写回数据库 任务三数据访问辅助类的设计与实现 6 在内存读写数据库操作 DataSet对象 DataSet作为ADO NET的核心 是一个简单 独立 存在于内存中的数据库视图 DataSet是离线的 它提供了与数据源类型无关的关系编程模型 DataSet所表示的数据集 可以同时包含各种不同类型的数据源数据 如SqlServer access Oracle等 在DataSet中可以包含任意数量的DataTable 数据表 且每个DataTable对应一个数据库中的数据表 Table 或视图 view 一般来说 一个对应DataTable对象的数据表就是一堆数据行 DataRow 与列 DataColumn 的集合 DataTable会负责维护每一数据行保留它的初始状态 OriginalState 和当前的状态 CurrentState 以解决多人同时修改数据时引发的冲突问题 任务三数据访问辅助类的设计与实现 7 对数据库进行选择性更新 Transaction对象 在对数据库进行CRUD操作中 有可能按用户意愿要求取消本次操作 或者由于数据完整性不满足 使SQL语句不能继续执行下去 这时 往往需要撤销此前的所有操作 就要使用到事务 一般来说 当有二个及以上CRUD数据库操作时 就必须要建立事务回滚机制 如果只进行一个操作 则一般不用事务 任务三数据访问辅助类的设计与实现 8 发现与处理数据库运行时错误 异常Exception 异常是在运行过程中发生的现象 它既不属于语法错误 也不属于算法错误 例如 不小心将0作为除数 就会引起异常 在数据库处理中 运行时异常也时常出现 如用户提供的数据不能满足数据完整性要求 或开发初期未发现SQL语句语法错误或其他错误 则都会导致出现异常的情况 有了异常 必须进行处理 否则就会使应用程序崩溃 大大降低应用程序的健壮性 任务三数据访问辅助类的设计与实现 四 任务拓展 使用Access SQL编写一个数据访问助手类要求 将这个助手类放在AccessDAL下 名称为AccessDALHelper 负责Access数据库的访问 它包括三个方法 GetConnectionString 从配置文件中读取配置项 组合成连接字符串 ExecuteSQLNonQuery 执行指定SQL语句 不返回任何值 一般用于Insert Delete Update命令 ExecuteSQLDataReader 执行SQL语句返回查询结果 一般用于Select命令 任务三数据访问辅助类的设计与实现 一 任务引导 由于接口只能声明 而不具体实现 也就是说接口不能通过以创建接口对象的形式来实现接口声明操作的功能 而必须通过继承自接口的类来实现接口中声明的所有操作 因此 本任务首先是定义继承之接口的数据实体操作类 然后在VS NET2005中编写相关代码以实现这些类的实现 任务四数据实体操作类子层的设计与实现 任务四数据实体操作类子层的设计与实现 二 任务实施 1 数据实体操作类的定义 1 数据实体操作类方法的定义 2 为数据访问层类图中的数据实体操作类添加操作 2 编写数据实体操作类子层为了将数据实体操作类子层中这些需要代码实现共享 并在运行时动态编译供应用程序使用 因此在ClothesShop主目录下 新建一个DAL文件夹 用于存放所有数据实体操作类 MessageDAL实体操作类代码见教材217页 其他实体操作类见教材附件2 三 相关知识 1 使用C 调用存储过程为了减少程序代码的冗余度 提高程序执行效率和安全性 在数据库设计时 经常把一组能完成特定功能的SQL语句集和可选控制流语句定义为一个存储过程 StoredProcedure 并经编译后存储在数据库中 应用程序通过指定存储过程的名字并给出参数 如果该存储过程带有参数 来执行它 2 使用SqlCommand Parameters属性进行参数传递 任务四数据实体操作类子层的设计与实现 一般来说 在更新DataTable或是DataSet时 如果不采用SqlCommand Parameters属性 那么当输入的Sql语句出现歧义时 如字符串中含有单引号 程序就会发生错误 并且他人可以轻易地通过拼接Sql语句来进行注入攻击 SqlCommand Parameters属性用于获取SqlParameterCollection值 而SqlParameterCollection表示与SqlCommand相关联的参数的集合以及各个参数到DataSet中列的映射 SqlCommand Parameters有Add方法与AddRange方法和Value子属性 Add方法 AddRange方法 参数的类型 任务四数据实体操作类子层的设计与实现 3 使用StringBuilder对象对字符串进行拼接或重复操作由于String对象是不可改变的 在每次使用System String类中的方法时 都要在内存中分配空间满足新字符串对象创建 在需要对字符串执行重复修改的情况下 与创建新的String对象相关的系统开销可能会非常昂贵 因此如果需要修改字符串而不创建新的对象或者频繁操作字符串时 则可以使用System Text StringBuilder类 Strin

温馨提示

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

评论

0/150

提交评论