数据库访问技术ADONET程序设计.ppt_第1页
数据库访问技术ADONET程序设计.ppt_第2页
数据库访问技术ADONET程序设计.ppt_第3页
数据库访问技术ADONET程序设计.ppt_第4页
数据库访问技术ADONET程序设计.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

数据库访问技术ADO.NET程序设计,第1章 以数据为中心的应用程序和 ADO.NET 第2章 连接数据源 第3章 执行连接环境下的数据库操作 第4章 构建 DataSet 第5章 使用 ADO.NET 读取和写入 XML 第6章 从现有数据源构造数据集 第7章 构建和应用 ADO.NET 的 Web 服务,配置 DataAdapter 以检索信息 使用 DataAdapter 填充 DataSet 配置 DataAdapter 更新后台数据源 将数据更改保存到数据源 冲突处理,第6章 从现有数据源构造数据集,配置 DataAdapter 以检索信息,DataAdapter XxxDataAdapter对象模型 DataAdapter 类的属性和方法 创建使用新 SELECT 语句的 DataAdapter 创建使用现有存储过程的 DataAdapter,6.1 配置 DataAdapter 以检索信息,多媒体演示 创建与填充数据集,多媒体演示 创建和填充一个数据集的概览,DataAdapter,数据源,数据适配器,数据表,数据表,数据集,数据适配器,填充,更新,填充,更新,6.1.1 DataAdapter,DataAdapter(续),数据适配器是数据集与数据源交互的桥梁 使相当于数据源本地拷贝的数据集可以与数据源之间进行交互 为数据库提供的主要两种数据适配器 SqlDataAdapter:不经过OLEDB层直接与SQLServer交互,速度较OleDbDataAdapter快 OleDbDataAdapter:适用于任何可以用OLEDB数据提供者访问的数据源,6.1.1 DataAdapter,XxxDataAdapter对象模型,sp_SELECT,XxxCommand,SelectCommand,UpdateCommand,InsertCommand,DeleteCommand,XxxDataAdapter,XxxCommand,XxxCommand,XxxCommand,XxxConnection,sp_UPDATE,sp_INSERT,sp_DELETE,XxxDataReader,6.1.2 XxxDataAdapter对象模型,XxxDataAdapter对象模型(续),6.1.2 XxxDataAdapter对象模型,XxxDataAdapter对象模型(续),Command 对象 通过数据适配器来读取数据源信息的命令对象,并将其保存在数据适配器的SelectCommand属性中 通过数据适配器可以将数据集中的改变提交到数据源的Command对象中,并保存在数据适配器的InsertCommand、UpdateCommand和DeleteCommand属性中 DataTableMapping(数据表映射)集合 DataTableMapping集合保存了数据集中的表、字段与数据库中的表、字段的映射关系,6.1.2 XxxDataAdapter对象模型,DataAdapter 类的属性和方法,6.1.3 DataAdapter 类的属性和方法,数据适配器的属性 SelectCommand 从数据源中读取数据 InsertCommand 将数据由数据集插入数据源 UpdateCommand 将数据集中更新的行写回数据源 DeleteCommand 在数据源中删除数据,DataAdapter 类的属性和方法(续),数据适配器的方法 Fill() 使用由SelectCommand属性指定的Select语句从数据源中读取/更新数据到数据集 Update() 对数据集DataTable对象中特定的行调用执行Insert、Delete、Update操作的对应的命令对象,6.1.3 DataAdapter 类的属性和方法,创建使用新 SELECT 语句的 DataAdapter,创建一个执行SELECT语句的数据适配器 对非连接方式应用以只读方式访问数据 创建数据适配器的两种方法 使用数据适配器配置向导 自己手工完成程序代码 在定义数据适配器时必须指定 一个用于查询的SELECT语句 一个新的或者已经存在的数据库连接,Visual Basic 示例,C# 示例,6.1.4 创建使用新 SELECT 语句的 DataAdapter,创建使用现有存储过程的 DataAdapter,可以编程创建一个执行存储过程 为SelectCommand指定一个存储过程 如果需要可以为InsertCommand、UpdateCommand和DeleteCommond指定存储过程 使用向导方式或者手工编码方式创建数据适配器 必须指定 一个新的或者已经存在的数据库连接 调用的存储过程 实践,Visual Basic 示例,C# 示例,6.1.5 创建使用现有存储过程的 DataAdapter,第6章 从现有数据源构造数据集,配置 DataAdapter 以检索信息 使用 DataAdapter 填充 DataSet 配置 DataAdapter 更新后台数据源 将数据更改保存到数据源 冲突处理,使用 DataAdapter 填充 DataSet,使用 DataAdapter 填充 DataSet 为 DataSet 指定附加约束 高效地填充 Dataset 使用多个 DataAdapter 填充一个 DataSet,6.2 使用 DataAdapter 填充 DataSet,多媒体演示 数据适配器的 Fill 方法,使用数据适配器的Fill()方法在数据集对象中填充与创建DataTable 对象,使用 DataAdapter 填充 DataSet,可以使用数据适配器来填充数据集 调用数据适配器的Fill()方法 Fill()方法执行SelectCommand 使用查询结果的内容和结构填充数据集中的数据表 可以通过下列方法提高性能 DataSet.EnforceConstraints=False 对DataTable 对象调用BeginLoadData()方法,Visual Basic 示例,C# 示例,6.2.1 使用 DataAdapter 填充 DataSet,为 DataSet 指定附加约束,可以在数据结构未知的情况下填充数据集 数据集的数据结构在设计阶段未知 在运行时根据得到的数据来确定数据集的数据结构 可以在运行时通过数据适配器控制如何创建并生成数据集的数据结构,Visual Basic 示例,C# 示例,6.2.2 为 DataSet 指定附加约束,为 DataSet 指定附加约束(续),6.2.2 为 DataSet 指定附加约束,使用MissingSchemaAction属性控制数据结构生成 Add 添加时不保存主键信息 AddWithKey 添加时主键信息载入DataTable 对象 Error 用于必须按照事先定义的结构的验证 Ignore 忽略结果集中多出的表和列,aDataAdapter.MissingSchemaAction = MissingSchemaAction.Add,aDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey,aDataAdapter.MissingSchemaAction = MissingSchemaAction.Error,aDataAdapter.MissingSchemaAction = MissingSchemaAction.Ignore,调用FillSchema()方法建立一个新的数据集的数据结构 FillSchema()方法只是将数据结构的信息取到数据集与数据表 FillSchema()方法的语法 aDataTableArray = aDataAdapter.FillSchema(aDataSet,_ SchemaType.Mapped | SchemaType.Source) SchemaType的两个属性:Mapped或者Source, 用于决定是否将数据表映射集合的信息应用到查询结果,为 DataSet 指定附加约束(续),6.2.2 为 DataSet 指定附加约束,高效地填充 Dataset,在填充一个数据集前显式地定义数据结构 数据表、数据列以及数据关联在数据被载入前已经确定 使数据可以被更高效地载入 如何显式地定义一个数据集的数据结构 创建一个类型化的数据集类 dsCustomers.Customers.BeginLoadData() daCustomers.Fill(dsCustomers.Customers) dsCustomers.Customers.EndLoadData() DataGrid1.DataSource = dsCustomers.Customers.DefaultView 或者以编程的方式创建数据表、数据列和数据关联等对象,Visual Basic 示例,C# 示例,6.2.3 高效地填充 Dataset,使用多个 DataAdapter 填充一个 DataSet,可以使用多个数据适配器填充一个数据集 每个数据适配器填充数据集中一个独立的表 为每一个数据适配器调用Fill()方法 在数据集中指定填充哪一个表 Visual Basic 示例 daCustomers.Fill(dsCustomerOrders.Customers) daOrders.Fill(dsCustomerOrders.Orders) DataGrid1.DataSource = dsCustomerOrders.Customers 实践,6.2.4 使用多个 DataAdapter 填充一个 DataSet,实验 A 在断开式应用程序中检索数据,练习 1 查看应用程序 练习 2 创建存储员工信息和应用程序设置的 DataSet 练习 3 加载并显示员工信息 练习 4 指定并使用不同的服务器名称,第6章 从现有数据源构造数据集,配置 DataAdapter 以检索信息 使用 DataAdapter 填充 DataSet 配置 DataAdapter 更新后台数据源 将数据更改保存到数据源 冲突处理,配置 DataAdapter 更新后台数据源,DataSet 跟踪更改的方式 数据更新命令 使用数据适配器配置向导设置数据更新命令,6.3 配置 DataAdapter 更新后台数据源,多媒体演示 数据集如何记录数据的更改,数据集是如何记录数据改变的,DataSet 跟踪更改的方式,每个数据行对象都有一个RowState属性 标识数据集中每一行数据的状态 状态的类型 DataRowState.Added 该行已经插入到数据集 DataRowState.Deleted 该行已经从数据集中删除 DataRowState.Detached 该行已经创建,但未增加到数据 集中的DataRowCollection DataRowState.Modified 该行已经更改 DataRowState.Unchanged 该行没有发生任何变化,Visual Basic 示例,C# 示例,6.3.1 DataSet 跟踪更改的方式,DataSet 跟踪更改的方式(续),每个数据集都对每一行数据维护两份拷贝 当前版本 DataRowVersion.Current if (row.RowState = DataRowState.Added) row“FieldName“,DataRowVersion.Current 原始版本 DataRowVersion.Original if (row.RowState = DataRowState.Deleted) row“FieldName“,DataRowVersion.Original,6.3.1 DataSet 跟踪更改的方式,数据更新命令,一个SqlDataAdapter或OleDbDataAdapter对象都有一些命令对象可以用来更改数据源的数据 InsertCommand UpdateCommand DeleteCommand 语法:对Sql和OleDb的数据适配器以及各个命令对象完全相同 public SqlCommand InsertCommand get; set;,Visual Basic 示例,C# 示例,6.3.2 数据更新命令,使用数据适配器配置向导设置数据更新命令,可以使用数据适配器向导配置数据更新命令 向导有下列三种不同的方式产生更新命令 使用SQL语句 创建一个新的存储过程 使用已经存在的存储过程 实践,6.3.3 使用数据适配器配置向导设置数据更新命令,第6章 从现有数据中构造数据集,配置 DataAdapter 以检索信息 使用 DataAdapter 填充 DataSet 配置 DataAdapter 更新后台数据源 将数据更改保存到数据源 冲突处理,将数据更改保存到数据源,使用DataSet对象的GetChanges方法的时机 将更改合并到一个DataSet对象 使用DataSet更新数据源 DataSet接受数据更改的方式,6.4 将数据更改保存到数据源,多媒体演示 使用数据适配器的Update方法更新对应的数据源,数据适配器的Update方法更新对应的数据源,使用DataSet对象的GetChanges方法的时机,当需要将数据更改传给由另一个对象使用的另一个类的时候调用GetChanges()方法 代码示例 If dsCustomers.HasChanges(DataRowState.Modified) Then Dim dsTemp As DataSet dsTemp = dsCustomers.GetChanges(DataRowState.Modified) DataGrid1.DataSource = dsTemp.Tables(0).DefaultView End If 使用GetChanges()方法得到包含该数据集中所有数据更改的数据集的拷贝 从数据被载入开始 从AcceptChanges()方法最后一次被调用开始,6.4.1 使用DataSet对象的GetChanges方法的时机,将更改合并到一个DataSet对象,使用Merge()方法合并两个数据集:一个原始数据集以及一个仅包含对原始数据集更改的数据集 代码示例 aDataSet.Merge(anotherDataSet) 被合并的两个数据集要有相同的数据结构,6.4.2 将更改合并到一个DataSet对象,使用DataSet更新数据源,数据适配器的Update()方法对指定的数据表中被更新过的每一行调用适当的SQL语句 INSERT UPDATE DELETE 代码示例 aDataAdapter.Update(aDataSet, aDataTable),Visual Basic 示例,C# 示例,6.4.3 使用DataSet更新数据源,数据集的AcceptChanges()方法提交自数据被载入或自此次调用起所有该数据集的数据更改 代码示例 aDataSet.AcceptChanges() 可以对整个数据集调用AcceptChanges()方法,或者对一个DataTable 对象的一个数据行对象调用 实践,DataSet接受数据更改的方式,6.4.4 DataSet接受数据更改的方式,Visual Basic 示例,C# 示例,第6章 从现有数据中构造数据集,配置 DataAdapter 以检索信息 使用 DataAdapter 填充 DataSet 配置 DataAdapter 更新后台数据源 将数据更改保存到数据源 冲突处理,冲突处理,发生冲突 检测冲突 解决冲突,6.5 冲突处理,发生冲突,非连接环境使用了开放式并发机制 在一步数据操作完成后数据库锁立即被释放 非连接环境使用开放式并发机制保证其他资源对数据库的同步访问 保守式并发机制在整个数据操作过程中保持数据库的锁 举例说明,6.5.1 发生冲突,发生冲突(续),在更新数据库时会产生数据冲突 另一个应用或服务可能已经更改了数据 举例 删除已经不存在的行 更新已经被更新的列 实践,6.

温馨提示

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

评论

0/150

提交评论