您的当前位置:首页正文

第四讲 数据适配器Adapter

来源:个人技术集锦
上课先给同学列出今天要学习的主要内容,主要内容如下:

1、 DataAdapter介绍

2、 在代码中创建DataAdapter对象 3、 DataAdapter对象的属性介绍 4、 DataAdapter对象的方法介绍 5、 DataAdapter对象的事件

第一个知识点:DataAdapter介绍

1、ADO.NET提供的两种数据访问模型:非断开连接模型和断开连接模型。

 连接的模型。本模型使用户能使用数据提供程序连接到数据库并对数据

库运行SQL命令,命令运行结束后将关闭和数据库之间的连接。

 断开连接的模型。本模型使得可以为来自数据源的数据创建内存中的缓

存,然后与数据源之间断开连接。

2、接着重点引出,我们这节课学习的主要是断开连接技术,接着引出断开连接模型:

在断开模型中,重点讲解几个概念:Dataset的概念,DataAdapter的概念。 Dataset的概念:

      

DataSet是ADO.NET的中心概念。

可以把DataSet当成内存中的数据库,DataSet是不依赖与数据库的独立数据集合。 所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的。 DataAdapter是和数据集(DataSet)一起使用的对象,它包括在一个数据库连接后用于填充数据集和更新数据源的一组数据命令,在数据库与数据集之间起桥梁作用。 DataAdapter的作用相当于绑定的DataSet对象和持久的数据存储之间的通道。 上面讲的数据存储可以是数据库、XML文件、Excel、甚至是纯文本。 DataAdapter是专门为处理脱机数据而设计的。

DataAdapter的概念:

根据数据库的不同,将DataAdapter进行分类,我们在下面重点讲解一下

SqlDataAdapter,为了大家方便SqlDataAdapter在连接SQL Server数据库的时候为什么效率高(不经过OLEDB层直接与SQLServer交互,速度较OleDbDataAdapter快。),引出了OLEDB的概念: OLE DB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。

    

OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC) 的结构化查询语言(SQL)能力,

还具有面向其他非SQL数据类型的通路。 作为微软的组件对象模型(COM)的一种设计,

OLE DB是一组读写数据的方法(在过去可能被称为渠道)。

第二个知识点:在代码中创建DataAdapter对象

了解DataAdapter实例化的几种方法,并为同学现场显示这个例子的重点代码,诱导学生自己完成其中的一种。

参数为SqlCommand对象的构造函数的例子: SqlCommand cmd = new SqlCommand(strSql, con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); int iCount = da.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; dataGridView1.Refresh(); 当堂布置课堂作业:利用构造函数为SQL与stringConnection实现课堂演示例子的相同功能。

第三个知识点: DataAdapter对象的属性的介绍

属性 SelectCommand InsertCommand 在数据源中检索数据的数据命令 在数据源中插入数据的数据命令 描述 UpdateCommand 在数据源中更新数据的数据命令 DeleteCommand TableMappings UpdateBatchSize 在数据源中删除数据的数据命令 DataTableMapping 对象的集合,决定DataSet中的行与数据源之间的关系 决定批进程支持,指出在批处理中可执行的命令的数量 分别给学生介绍一些上面这些重点的属性,然后给学生演示一个SelectCommand属性的用法,下面是示例代码: SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommand command = new SqlCommand(\"SELECT * FROM STUDENT \" + \"WHERE SAGE = @SAGE\ command.Parameters.Add(\"@SAGE\ command.Parameters[0].Value = age; adapter.SelectCommand = command;

接下来是TableMappings属性的应用,讲解一下TableMappings的作用什么?获取一个集合,它提供源表和 DataTable 之间的主映射。 下面给一段主要代码示例:

SqlDataAdapter adapter = CreateDataAdapter(conn, age); DataSet ds = new DataSet(); //Mappings的用法 DataTableMapping mapping = adapter.TableMappings.Add(\"Table\学生表\"); mapping.ColumnMappings.Add(\"SNO\学生编号\"); mapping.ColumnMappings.Add(\"SName\学生姓名\"); mapping.ColumnMappings.Add(\"SDept\所在院系\"); mapping.ColumnMappings.Add(\"SClass\所在班级\"); mapping.ColumnMappings.Add(\"SSex\性别\"); mapping.ColumnMappings.Add(\"SAge\年龄\"); adapter.Fill(ds); dataGridView1.DataSource = ds.Tables[\"学生表\"];//使用设置好的映射表名字。 dataGridView1.Refresh(); 第四个知识点:DataAdapter对象方法的介绍:

在这个环节中重点讲一下Fill文件和Update文件。前者从数据源把数据加载至DataSet,后者把数据从DataSet传回数据源。

先给学生讲解Fill方法:并一个一个大致的讲解一下Fill方法的4个重载。 接着,重点用代码演示一下如何用Fill方法实现分页的技术,并给学生提示用Fill(DataSet, StartPageIndex, PageSize, String)来实现。当做一个课堂作业布置给学生。

接着讲解第二个方法Update,并讲解Update方法的作用:从名为“Table”的 DataTable 为指定的 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或 DELETE 语句。

更新是逐行进行的。对于每个已插入、修改和删除的行,Update 方法会确定已对其执行的更改的类型(插入、更新或删除)。根据更改类型,执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当应用程序调用 Update 方法时,DataAdapter 根据 DataSet 中配置的索引顺序为每一行检查 RowState 属性,并迭代执行所需的 INSERT、UPDATE 或 DELETE 语句。例如,由于 DataTable 中行的排序,Update 可能先执行一个 DELETE 语句,接着执行一个 INSERT 语句,然后再执行另一个 DELETE 语句。

应注意,这些语句不是作为批处理进程执行的;每一行都是单独更新的。下面是重点代码的提示:

第五个知识点:DataAdapter对象事件的使用:

给学生列出事件列表,并大致讲解一下事件的使用时机:

 

Disposed:当调用Dispose释放组件的时候调用。 FillError:在填充操作过程中出现错误时返回。

该事件。RowUpdating:在对数据源执行命令前的Update过程中发生,试图进行更新,因此激发该事件。

 RowUpdated:在对数据源执行命令后的Update过程中发生,试图进行更新,因此激发

并演示一个例子给学生,重点代码提示如下:

最后做一个总结,并布置课下作业:

因篇幅问题不能全部显示,请点此查看更多更全内容