使用SqlDataAdapter对象获取数据.docx_第1页
使用SqlDataAdapter对象获取数据.docx_第2页
使用SqlDataAdapter对象获取数据.docx_第3页
使用SqlDataAdapter对象获取数据.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

使用SqlDataAdapter对象获取数据Posted on 2009-01-07 16:02 礼拜一 阅读(6143) 评论(0) 编辑 收藏一SqlDataAdapter对象1. SqlDataAdapter特性SqlDataAdapter类用作ADO.NET对象模型中和数据连接部分和未连接部分之间的桥梁。SqlDataAdapter从数据库中获取数据,并将其存储在DataSet中。SqlDataAdapter也可能取得DataSet中的更新,并将它们提交给数据库。SqlDataAdapter是为处理脱机数据而设计的,调用其Fill方法填充DataSet时甚至不需要与数据库的活动连接。即如果调用Fill方法时,SqlDataAdapter与数据库的连接不是打开时,SqlDataAdapter将打开数据库连接,查询数据库,提取查询结果,将查询结果填入DataSet,然后关闭也数据库的连接。2. SqlDataAdapter的设置SqlCommand属性SqlDataAdapter将查询结果存储到DataSet中时,SqlDataAdapter使用SqlCommand和SqlConnection与数据库进行通信。SqlDataAdapter在内部使用SqlDataReader获取结果,并将信息存储到DataSet的新行。SqlCommand类的属性包括SelectCommand、InsertCommand、UpdateCommand、DeleteCommand分别对应数据库的查询、插入、更新和删除操作。TabbleMappings集合默认情况下,SqlDataAdapter假定SqlDataReader中的列与DataSet中的列匹配,但实际情况中往往期望DataSet的架构不同于数据库的架构,因此SqlDataAdapter提供了一种将查询结果映射到DataSet结果的机制:TableMappings集合。SqlDataAdapter的TableMappings属性返回一个DataTableMappingsConnention对象,它包含DataTableMapping对象的集合。每个对象允许在数据库中的一个表(或视图或存储过程)与DataSet中相对应的DataTable的名称之间建立一种映射;TableMappings对象具有ColumnMappings属性,它返回DataColumnMappings对象组成的集合,每个DataColumnMappings对象对应数据库查询结果中的一列映射到DataSet中DataTable中的一列。示例代码如下:Using System.Data.Common;SqlDataAdapter danew SqlDataAdapter();/初始化DataAdapterDataTableMapping tableMap;tableMap=da.TableMappings.Add(“Table”,”Employees”);tableMap.ColumnMappings.Add(“EmpID”,”EmployeeID”);tableMap.ColumnMappings.Add(“LName”,”LastName”);二SqlDataAdapter的创建与使用1. 创建SqlDataAdapterNew 关键字New 关键字建立新的SqlDataAdapter对象后,再设置其SqlCommand属性SqlDataAdapter danew SqlDataAdapter();da.SelectCommand=cmd;SqlDataAdapter的构造函数strSql是查询数符串;strConn是数据库连接字符串;cmd是SqlCommand对象;cn是SqlConnection对象。SqlDataAdapter danew SqlDataAdapter(strSql,strConn);SqlDataAdapter danew SqlDataAdapter(strSql,cn);SqlDataAdapter danew SqlDataAdapter(cmd);2. 获取查询中的结果使用Fill方法调用SqlDataAdapter类的Fill方法会执行存储在SqlDataAdapter对象的SqlCommand属性中的查询,并将查询结果存储在DataSet中。示例代码如下:SqlDataAdapter danew SqlDataAdapter(strSql,strConn);DataSet ds new DataSet();da.Fill(ds);执行以上代码后,DataSet的实例对象ds中会创建一个新的DataTable,这个DataTable拥有strSql查询语句中所包括的字段,但DataTable对象的名称为默认的Table,而不是查询语句中所查询的表的名称。使用重载的Fill方法指定DataTableda.Fill(DataSet,”MyTableName”)/ SqlDataAdapter填充指定DataSet的特定表。da.Fill(DataTable);/ SqlDataAdapter填充已经创建的DataTable对象。Fill方法分页显示da.Fill(DataSet,intStartRecord,intNumRecord,”TableName”);/Fill方法可能很轻松的实现分页显示,但操作效率很低。调用SqlDataAdapter对象Fill方法过程的数据库连接的打开与关闭SqlDataAdapter的Fill方法调用前不需要有活动的SqlConnection对象,SqlDataAdapter会自己打开strConn语句中的数据库,获取查询结果后,关闭与数据库的连接。如果已经存在SqlConnection对象,无论是否已经打开,SqlDataAdapter执行完Fill方法后,均会将SqlConnection对象返回到原始状态。当程序中的多个SqlDataAdapter对象使用都一个SqlConnection对象时,为避免多次打开与关闭SqlConnection对象,应该在调用SqlDataAdapter的Fill方法前调用SqlConnection的Open方法打开数据库的连接,待完成Fill调用后再调用SqlConnection的Close方法关闭数据库的连接。DataSet中数据的更新如果DataSet中的数据需要更新,在调用Fill方法之前应该先清除DataSet或DataTable中的数据,这样可以确保DataTable中不会出现重复的数据行,也不会出现数据库中已经不存在的数据行。3. 将查询结果映射到DataSetTableMappings映射TabbleMappings集合控制SqlDataAdapter如何将DataSet映射到数据库。如果保持TabbleMappings集合为空,调用Fill方法,然后将DataSet作为参数,而不指定表名,SqlDataAdapter将假定您希望使用一个名为“Table”的DataTable来装载数据。SqlDataAdapter.TableMappings.Add(“Table”,”Employees”)此语句的作用是将DataSet中原来名字为“Table”的DataTable命名为“Employees”,DataSet填充数据时,按查询结果集的顺序依次填充DataSet中的Table、Table1、Table2,所以给DataTable命名时需留意该DataTable是否为当前将要使用的对象。TableMappings和ColumnMappings的AddRange方法构造并赋值DataTableMapping、DataColumnMapping数组,再调用它们的AddRange方法将该集合整体添加到映射数组。DataTableMapping tableMap;tableMap=da.TableMapping.Add(“Table”,”Employees”);DataColumnMapping columnMaps;columnMaps=new DataColumnMapping;new DataColumnMapping (“EmpID”,”EmployeeID”),new DataColumnMapping (“LName”,”LastName”)tableMap.ColumnMapping.AddRange(columnMaps);MissingMappingAction属性当SqlDataAdapt

温馨提示

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

评论

0/150

提交评论