DataReader与DataSet

来源:互联网 发布:华讯网络北京怎么样 编辑:程序博客网 时间:2024/06/06 03:28

         ADO.NET数据访问技术给我们提供了巨大的便利,其中的DataReader对象和DataSet对象的学习让我对数据查询的实现有了新的认识。

DataSet对象

       DataSet是ADO.NET的中心概念,它是支持ADO.NET断开式、分布式数据方案的核心对象。DataSet对象是创建在内存中的集合对象,它可以包含任意数量的数据表,以及所有表的约束、索引和关系。相当于在内存中的一个小型关系数据库。一个DataSet对象包括一组DataTable对象和DataRelation对象,其中每个DataTable对象由DataColumn、DataRow和DataRelation对象组成。
        使用DataSet对象的方法有以下几种,这些方法可以单独应用,也可以结合应用。
        1.以编程方式在DataSet中创建DataTable、DataRelation和Constraint,并使用数据填充表。
        2.通过DataAdapter用现有关系数据源中的数据表填充DataSet。
        3.使用XML加载和保持DataSet内容

DataAdapter对象

        DataAdapter对象是DataSet对象和数据源之间联系的桥梁,主要是从数据源中检索数据、填充DataSet对象中的表或者把用户对DataSet对象作出的更改写入到数据源。

使用DataAdapter对象填充DataSet对象

        通过DataAdapter对象查询数据之后,需要把数据填充到DataSet中,具体的操作流程是:首先使用DataAdapter取出数据,然后调用DataAdapter的Fill方法,将取到的数据导入DataSet中。DataAdapter的Fill方法需要两个参数,一个是被填充的DataSet的名字,另一个是填充到DataSet中的数据的命名,在这里把填充的数据看成一张表,第二个参数就是这张表的名字。
例如:
//创建一个DataSet数据集DataSet ds=new DataSet();String sqlStr="select * from tb_Student";SqlConnection con=new SqlConnection("Server=.;database=db_12;Uid=sa;Pwd=123456;");SqlDataAdapter dap=new SqlDataAdapter(sqlStr,con);//连接数据库Con.Open();//使用Sqldataadapter对象的Fill方法填充数据集Dap.Fill(ds,"Student");//将数据集中的所有数据显示到GridView控件中GridView1.DataSource=ds;GridView1.DataBind();

使用DataReader对象读取数据

        DataReader读取器以基于连接的、快速的、未缓冲的以及只向前移动的方式来读取数据,一次读取一条记录,然后遍历整个结果集。

//执行查询SqlDataReader dr=myCmd.ExecuteReader();DataTable.Load(dr);

DataReader对象与DataSet对象的区别

       ADO.NET提供两个对象用于检索关系数据,并把它存储在内存中,分别是DataSet和DataReader。DataSet提供内存中关系数据的表现——表和次序、约束等表间关系的完整数据集合;DataReader提供快速、只向前、只读的来自数据库的数据流。

在实现应用程序功能方面的区别

        使用DataSet时,一般使用DataAdapter与数据源交互,用DataView对DataSet中的数据进行排序和过滤。使用DataSet是为了实现应用程序中的下述功能:
        1.做结果中的多个分离的表。
        2.做来自多个源(如数据库、XML文件)的数据
        3.层之间交换数据或使用XML Web服务。与DataReader不停,DataSet能被传递到远程客户端。
        4.缓冲重复使用相同的行集合以提高性能
        5.对于执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端的使用
        6.提供关系数据的分层XML视图并使用XSL转换或XML路径与查询等工具来处理数据。
         
         在应用程序需要以下功能时使用DataReader
         1.需要缓冲数据
         2.正在处理的结果集太大而不能全部放入内存中。
         3.需要迅速一次性地访问数据,采用只向前的只读方式。

DataSet与DataAdapter在为用户查询数据时的区别

 DataSet在为用户查询数据时的步骤如下:

(1)创建DataAdapter对象
(2)定义DataSet对象
(3)执行DataAdapter对象的Fill方法
(4) 将DataSet中的表绑定到数据控件中

DataReader在为用户查询数据时的步骤如下:
(1)创建连接
(2)打开连接
(3)创建Command对象
(4)执行Command的ExecuteReader方法
(5)将DataReader绑定到数据控件中
(6)关闭DataReader
(7)关闭连接


         





   
        
0 0