数据库应用开发.ppt
第8章 数据库应用开发,ADO.NET 数据访问技术系列课程概览,本次课程内容包括以数据为中心的应用程序设计ADO.NET 简介数据访问系列课程简述,ADO.NET 数据访问技术系列课程概览,议程以数据为中心的应用程序设计ADO.NET 简介数据访问系列课程简述,ADO.NET 数据访问技术系列课程概览,数据存储ADO.NET 支持下列的存储类型无结构有结构,无层次的数据以逗号分离的数据(CSV)文件、Microsoft Excel 电子表格、Microsoft Exchange 文件、Active Directory 文件等有层次的数据XML 文档等关系型数据库SQL Server、Oracle、Access 等,ADO.NET 数据访问技术系列课程概览,连接环境连接环境是指用户在这种环境下始终保持与数据源的连接优点环境易于实施安全控制同步问题易于控制数据实时性优于其他环境缺点必须保持持续的网络连接扩展性差,ADO.NET 数据访问技术系列课程概览,非连接环境在非连接环境中,中央数据存储的一部分数据可以被独立地复制与更改,在需要时可以与数据源中的数据合并优点可以在任何需要的时间进行操作,在必要时才连接到数据源不独占连接非连接环境的应用提高了应用的扩展性与性能缺点数据不是实时的必须解决数据的并发性与同步问题,ADO.NET 数据访问技术系列课程概览,一层(单机),数据访问应用模型数据访问的发展史,两层,三层,n 层,Internet,ADO.NET 数据访问技术系列课程概览,议程以数据为中心的应用程序设计ADO.NET 简介数据访问系列课程简述,ADO.NET 数据访问技术系列课程概览,ADO.NET 简介ADO.NET 是一系列与数据操作相关的类。它们提供比ADO 更灵活的数据访问机制为非连接环境设计的系统架构支持XML 的编程对象模型一系列用来在.NET 架构中访问数据的类、结构以及枚举器,ADO.NET 数据访问技术系列课程概览,从ADO 到 ADO.NET,ADO,ADO.NET,Connection,Connection,Connection,XxxConnection,XxxTransaction,XxxCommand,DataSet,XxxDataReader,XxxDataAdapter,ADO.NET 数据访问技术系列课程概览,ADO.NET 发展,OleDb SqlClient XML 处理,ADO.NET1.1,OracleClientODBC,ADO.NET1.1,支持镜像 异步数据访问,ADO.NET2.0,LINQ EntityFramework Data Services,ADO.NET3.5,ADO.NET 数据访问技术系列课程概览,在连接环境中使用ADO.NET,SqlDataReader,SqlCommand,SqlConnection,SQL Server 数据库,在连接环境中,只有操作结束后才断开与数据库的连接1.打开连接2.执行命令3 从DataReader 中读取数据4.关闭DataReader5.断开连接,ADO.NET 数据访问技术系列课程概览,在非连接环境中使用ADO.NET,DataSet,SqlDataAdapter,SqlConnection,SQL Server 数据库,在与数据库断开连接的情况下,数据库资源并不被独占1.打开连接2.填充数据集3.关闭连接4.处理数据集5.打开连接6.更新数据源7.关闭连接,ADO.NET 数据访问技术系列课程概览,议程以数据为中心的应用程序设计ADO.NET 简介数据访问系列课程简述,ADO.NET 数据访问技术系列课程概览,ADO.NET连接方式进行数据访问处理连接字符串的安全性使用连接池ADO.NET 非连接方式进行数据访问处理数据集,ADO.NET连接方式进行数据访问,本次课程内容包括连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,ADO.NET连接方式进行数据访问,议程连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,ADO.NET连接方式进行数据访问,连接环境的特点连接环境是指用户在这种环境下始终保持与数据源的连接优点环境易于实施安全控制同步问题易于控制数据实时性优于其他环境缺点必须保持持续的网络连接扩展性差,ADO.NET连接方式进行数据访问,连接环境下的对象模型XxxConnection建立与数据源的连接,如SqlConnection 用于建立与Microsoft SQL Server的连接,OleDbConnection用于建立与任何支持OLEDB 的数据源的连接XxxCommand执行数据源的命令,如SqlCommand 可以调用一个Microsoft SQL Server的存储过程,XxxCommand 对象的ExecuteReader 方法可以返回一个XxxDataReader 对象XxxDataReader以只读的、前向的方式,以流的形式读取数据,例如SqlDataReader 可以读取Microsoft SQL Server中的数据XxxDataReader 由 XxxCommand(通常是SELECT命令)的ExecuteReader 方法返回XxxXmlReader提供以快速的、无缓存的、前向的方式读取XML数据,ADO.NET连接方式进行数据访问,议程连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,ADO.NET连接方式进行数据访问,定义连接XxxConnection(如SqlConnection)连接字符串是包含数据连接参数的一个字符串,用于定义对数据源的连接连接字符串中包含的参数连接字符串的重要参数:Provider 连接所用的数据提供程序的种类Data Source 要连接的 SQL Server 的名称Initial Catalog 要连接的数据库的名称Integrated Security 使用Windows 验证确定用户权限User ID/Password SQL Server登录名称和密码Persist Security Info 连接后是否传送安全信息,ADO.NET连接方式进行数据访问,打开和关闭连接打开连接XxxConnection.Open()关闭连接XxxConnection.Close()退出连接池XxxConnection.Dispose(),ADO.NET连接方式进行数据访问,DEMO-1创建连接到数据库1、采用Windows集成认证方式连接数据库2、采用SQL认证方式连接数据库,ADO.NET连接方式进行数据访问,议程连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,ADO.NET连接方式进行数据访问,Command 对象Command 对象是一个SQL语句或者存储过程的引用Command 对象可以直接被执行属性Name:可选属性,可以用于引用该对象Connection:连接对象的引用,与数据库交互CommandType:Text、StoredProcedure、DirectTable 的一种CommandText:SQL 语句或者存储过程的名字Parameters:可以有零个或多个参数,ADO.NET连接方式进行数据访问,Command 对象的重要方法ExecuteScalar返回一个惟一的值ExecuteNonQuery用于更新数据库或改变数据库结构,返回被影响的行数ExecuteReader返回数据行的集合ExecuteXmlReader(仅限于SqlCommand)返回一个XML 的结果集,ADO.NET连接方式进行数据访问,议程连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,ADO.NET连接方式进行数据访问,返回单个值使用ExecuteScalar()方法ADO.NET 比 ADO 效率更高,返回整个记录集示例一个特定产品的库存数量有多少个产品使用COUNT、MAX、MIN、AVERAGE,ADO.NET连接方式进行数据访问,DEMO-2执行命令1、建立一个数据库Messages,并建立满足如下关系的表结构2、向权限表插入一条数据3、如果已插入新行,则会返回新的iPrivilegeId列值,如果失败,则返回 0。4、获取管理员的数量,ADO.NET连接方式进行数据访问,议程连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,ADO.NET连接方式进行数据访问,返回数据行使用ExecuteReader()方法返回一个DataReader例如:SqlDataReader、OleDbDataReaderDataReader只读、前向,数据行的流,ADO.NET连接方式进行数据访问,使用DataReader 获取数据Read 方法得到下一行如果还有后续数据行存在,返回True;反之返回FalseItem 属性aReader“aColumnName”或aReadercolumnPositionGetXxx 方法,例如:GetString、GetInt32GetStringColumnPosition(以基数零开始)GetValues 方法一次返回当前行所有的列,高效IsDbNull 方法用于测试是否返回NULLClose 方法Read 方法返回 False 时,应该调用Close 方法关闭 DataReader,释放连接,ADO.NET连接方式进行数据访问,返回多个结果集一个存储过程可能包含多条SQL 语句将相关的任务分组封装业务逻辑如果一个存储过程返回了多个结果集调用NextResult 移到下一个结果集判断有多少数据行被一个存储过程影响使用RecordsAffected 属性,ADO.NET连接方式进行数据访问,DEMO-3执行返回数据行的Command 命令1、连接数据库Messages2、获取Messages数据库中管理员的列表3、如果没有任何管理员应弹出提示4、在获取管理员的同时获取ID值,ADO.NET连接方式进行数据访问,议程连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,ADO.NET连接方式进行数据访问,不返回值使用ExecuteNonQuery()方法执行DDL和DCL语句CREATE/ALTER/DROPGRANT/DENY/REVOKE执行其它DML语句INSERT/UPDATE/DELETE,ADO.NET连接方式进行数据访问,DEMO-4执行不返回值的Command 命令1、通过SQL语句执行更新操作,ADO.NET连接方式进行数据访问,议程连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,ADO.NET连接方式进行数据访问,Command 命令的参数介绍SQL 语句和存储过程可以有输入输出参数以及返回值Command对象参数用来设置或者返回这些参数SqlParameter、OleDbParameter,ADO.NET连接方式进行数据访问,Command 命令的参数(续)ParameterName命令参数的名称,例如CatIdDbType连接到数据库的类型,有SqlType 和OleDbTypeDirectionParameterDirection 枚举集指定的值,包括:ParameterDirection.Input(输入)ParameterDirection.InputOutput(输入输出)ParameterDirection.Output(输出)ParameterDirection.ReturnValue(返回值),ADO.NET连接方式进行数据访问,DEMO-5使用Command 参数1、使用参数对需要修改的列进行修改,ADO.NET连接方式进行数据访问,回顾连接环境简介连接到数据源创建命令返回单个值返回数据行不返回值使用参数,