《在断开连接的环境中编辑和更新数据.pptx》由会员分享,可在线阅读,更多相关《在断开连接的环境中编辑和更新数据.pptx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、体验第1页/共23页DataAdapter简介 在ADO.NET中,DataSet是数据在内存中的表示形式,它提供了独立于数据源的关系编程模型。第2页/共23页.NET Framework中的DataAdapter 类.NET Framework 2.0包括DataAdapter类,如下下表所示。DataAdapter 类类描述描述System.Data.SqlClient.SqlDataAdapterSQL Server.NET Framework数据提供程序数据提供程序DataAdapter类类System.Data.OleDbClient.OleDbDataAdapterOLE DB.N
2、ET Framework数据提供程序数据提供程序DataAdapter类类System.Data.Odbc.OdbcDataAdapterODBC.NET Framework数据提供程序数据提供程序DataAdapter类类System.Data.OracleClient.OracleDataAdapterOracle.NET Framework数据提供程序数据提供程序DataAdapter类类第3页/共23页通过Visual Studio 2005创建DataAdapter 通过编程方式创建DataAdapter 第4页/共23页通过编程方式创建DataAdapterSqlDataAdapt
3、er 构造函数支持四种重载。此时所使用的重载 SqlDataAdapter(testCommand)允许在构造函数中指定带有有效连接的命令。其他三种可用的重载如下。SqlDataAdapter():设置SqlDataAdapter的一个空实例SqlDataAdapter(string commandText,SqlConnection connection):允许指定用于填充DataSet/DataTable的命令(作为字符串)以及填充时将用到的连接SqlDataAdapter(string commandText,string connectionString):允许将命令和相关连接都作为字
4、符串来指定;第5页/共23页DataAdapter的属性 DataAdapter所提供的主要属性及其描述如下表所示。属性属性描述描述SelectCommand在数据源中检索数据的数据命令在数据源中检索数据的数据命令InsertCommand在数据源中插入数据的数据命令在数据源中插入数据的数据命令UpdateCommand在数据源中更新数据的数据命令在数据源中更新数据的数据命令DeleteCommand在数据源中删除数据的数据命令在数据源中删除数据的数据命令TableMappingsDataTableMapping 对象的集合,决定对象的集合,决定DataSet中的行与数据源之间的关系中的行与数
5、据源之间的关系UpdateBatchSize决定批进程支持,指出在批处理中可执决定批进程支持,指出在批处理中可执行的命令的数量行的命令的数量第6页/共23页DataAdapter的方法 使用DataAdapter的Fill()方法填充DataSetDataAdapter有两个重要的方法:有两个重要的方法:Fill()和和Update()。前者从数据源把数据加载至前者从数据源把数据加载至DataSet,后者把数据,后者把数据从从DataSet传回数据源。传回数据源。使用 DataAdapter的Update()方法更新DataSet第7页/共23页更新数据时的状态管理 在连接、获取、断开、修改、
6、重新连接和持久保存更改等一系列过程中,可能需要考虑很多事情。可能需要决定插入、删除或更新某些行其他用户可能同时保存其更改,您在DataSet中所保存的查询数据可能已无效 为新插入的记录所生成的键值可能不正确 在设法进行更新之后,可能需要将当前数据的刷新版本取回应用程序第8页/共23页更新数据时的状态管理DataRowState枚举的各种值及其相应的含义如下表所示。常量常量值值描述描述Detached1在任何给定时间,一个在任何给定时间,一个DataRow最多只能连接到最多只能连接到一个一个 DataTable。如果未连接到任何。如果未连接到任何 DataTable,则该行的状态为脱离则该行的状
7、态为脱离UnChanged2此行从数据源获取,并且未进行任何更改此行从数据源获取,并且未进行任何更改Added4此行从数据源获取,并且已添加到此行从数据源获取,并且已添加到DataTable中。中。在在更新更新期间,期间,DataAdapter将对其执行将对其执行InsertCommandDeleted8此行从数据源获取,然后从此行从数据源获取,然后从DataTable中删除。在中删除。在更新期间,更新期间,DataAdapter将对其执行将对其执行 DeleteCommandModified16此行从数据源获取,并且已经被修改过。在此行从数据源获取,并且已经被修改过。在更新更新期期间,数据适
8、配器将对其执行间,数据适配器将对其执行UpdateCommand第9页/共23页创建并使用SqlBulkCopy的步骤如下。用SqlBulkCopy移动大量数据 首先添加一个新的控制台应用程序,并将其命名为SqlBulkCopy。第三行“张宇”保持不变此应用程序的目的是演示在两个相同结构的表之间可以相当快地复制数据由于该应用程序操作的对象是同一个数据库,因此只需要一个连接字符串;但是,需要两个不同的SqlConnection:一个用于SqlBulkCopy将要读取的DataReader,另一个用于 SqlBulkCopy 本身 应用程序的第二部分使用SqlBulkCopy对象实例将从创建的Da
9、taReader读取的数据插入员工副本表操作完成代码示例代码示例C#代码示例代码示例VB第10页/共23页DataTable公开了一系列可以由应用程序捕获并处理的事件。DataTable事件 事件事件描述描述ColumnChanged在值被成功插入列时发生在值被成功插入列时发生ColumnChanging在值被提交给列时发生在值被提交给列时发生RowChanged在成功更改在成功更改DataRow之后之后发生发生RowChanging在在DataRow正在更改时发生正在更改时发生RowDeleted在表中的行被删除后发生在表中的行被删除后发生RowDeleting在表中的行被标记为删除时发生在
10、表中的行被标记为删除时发生TableClearing当表正在被清除时发生当表正在被清除时发生TableCleared当表已被清除时发生当表已被清除时发生TableNewRow在表中新增一行后立即发生在表中新增一行后立即发生第11页/共23页DataColumnChangeEventArgs对象所提供三个属性及其描述如下表所示。DataTable事件(续)属性属性描述描述Column获取其值将要改变的获取其值将要改变的DataColumn对象对象ProposedValue获取或者设置目标值。这就是要赋获取或者设置目标值。这就是要赋给列的新值。例如,在给列的新值。例如,在ColumnChangin
11、g事件处理程序中,事件处理程序中,可以查看可以查看ProposedValue,接受或,接受或拒绝该值的变化拒绝该值的变化Row获取其值将要改变的获取其值将要改变的DataRow对象对象第12页/共23页DataRowChangeEventArgs所提供的两个属性及其描述如下表所示。DataTable事件(续)属性属性描述描述Action获取将要或已经在获取将要或已经在DataRow上上发生的动作(例如,添加、修改发生的动作(例如,添加、修改或删除)或删除)Row获取将要或已经发生动作的获取将要或已经发生动作的DataRow对象对象第13页/共23页DataTableClearTableEven
12、tHandler所提供的三个属性及其描述如下表所示。DataTable事件(续)属性属性描述描述Table获取正在被清除的表获取正在被清除的表TableName获取表名获取表名TableNamespace获取给定表的命名空间。这在获取给定表的命名空间。这在XML转换中特别有用转换中特别有用第14页/共23页如前所述,DataTable事件可以分成以下三大类别。基于列的:ColumnChanging,ColumnChanged基于行的:RowChanging,RowChanged,RowDeleting,RowDeleted基于表的:TableClearing,TableCleared,Tabl
13、eNewRowDataTable事件(续)第15页/共23页使用GetChanges方法的时机GetChanges和Merge 在DataSet中获得更改的示例将更改合并到DataSet第16页/共23页习题1.多选题多选题:以下关于以下关于DataAdapter对象对象的描述的描述,_是正确的。是正确的。A.DataAdapter对象可以用来检查查对象可以用来检查查询结果询结果B.DataAdapter对象可以作为数据库对象可以作为数据库和断开连接对象之间的网桥和断开连接对象之间的网桥C.DataAdapter对象可提取查询结果对象可提取查询结果以便脱机时使用以便脱机时使用D.DataAda
14、pter对象可以把脱机使用对象可以把脱机使用时所做的更改提交到数据库中时所做的更改提交到数据库中第17页/共23页习题(续)2.多选题多选题:DataSet和和DataAdapter之间的区之间的区别是别是_。A.DataSet在断开连接的缓存中存储数据在断开连接的缓存中存储数据B.DataAdapter对象是对象是DataSet和数据源之和数据源之间检索或保存数据的桥梁间检索或保存数据的桥梁C.DataSet公开由表、行和列所组成的分公开由表、行和列所组成的分层对象模型层对象模型D.DataAdapter类表示一组数据库命令以类表示一组数据库命令以及可用做填充及可用做填充DataSet和更新
15、数据源的数和更新数据源的数据库连接据库连接第18页/共23页习题(续)3.多选题多选题:方法方法_能更有效地使用能更有效地使用DataAdapter填充填充DataSet。A.使用与使用与DataAdapter所传入的数据结构所传入的数据结构相同的类型化相同的类型化DataSetB.在填充在填充DataSet之前,调用之前,调用BeginLoadData()方法方法C.在使用多个有相同连接的在使用多个有相同连接的DataAdapter填充填充DataSet之前,显式地打开连接之前,显式地打开连接D.使用使用DataAdapter对象的对象的TableMappings集集合合第19页/共23页习
16、题(续)4.为了将数据更改持久地保存到数据为了将数据更改持久地保存到数据源,将按源,将按_顺序调用各种方法顺序调用各种方法。(1)调用调用Update()方法方法(2)调用调用GetChanges()方法方法(3)调用调用Merge()方法方法(4)调用调用AcceptChanges()方法方法A.(1)(2)(3)(4)B.(4)(1)(2)(3)C.(2)(3)(1)(4)D.(1)(3)(4)(2)第20页/共23页习题(续)5.准备将记录从一个数据库传输到另准备将记录从一个数据库传输到另一个数据库。一个数据库。只需确保源数据库是只需确保源数据库是 Microsoft SQL Serve
17、r,就能使用,就能使用 SqlBulkCopy 类来传输记录吗?类来传输记录吗?第21页/共23页习题(续)6.在在DataSet 和和 DataTable 对象中,可通对象中,可通过设置过设置SqlDataAdapter 的的_属性来批量传输数据库之间的数据,也属性来批量传输数据库之间的数据,也可通过可通过_方法,筛选出方法,筛选出 DataTable 或或 DataSet 被被更改的部分更改的部分。还还可以通过可以通过_方法,指定方法,指定 DataSet、DataTable 或或 DataRow 对象的数组合并为对象的数组合并为 DataSet。第22页/共23页感谢您的观看。第23页/共23页