【ADO.net】 DataReader与DataAdapter辨析

来源:互联网 发布:域名持有者 个人 企业 编辑:程序博客网 时间:2024/04/29 11:26

当我们与数据源建立连接并定义了查询命令后,就要从数据源中检索数据了。不同的数据检索形式,自然适应不同的情况,其性能自然也是不同的,这篇文章主要来区分一下DataReader与DataAdapter两种数据检索形式。

 

DataReader(数据阅读器)

         DataReader对象的作用就是从数据库中检索只读只进的数据。也就是说使用DataReader不可更新,删除和添加记录,同时记录的接受是顺序且不可后退的。使用read方法,前进到下一条记录。

         由于DataReader允许对数据库进行直接,高性能的访问,它只提供对数据的只读和只向前的访问,一次只访问一条记录,对服务器的内存要求较小。所以只需要显示数据的应用程序中,如学历的录入,职称的职称的录入等,为了根据职称表部门表等形成下拉框,以保证录入的安全,数据有效及录入的便捷,可以尽量使用dataReader,因为它将提供最佳的性能。

 

DataAdapter

         DataAdapter对象充当数据库和ADO.NET对象模型中非连接对象之间的桥梁。能够用来保存和检索数据。通常使用Fill方法将结果引入dataSet或DataTable中。以便实现脱机处理。

换句话来说,DataAdapter的作用就是从数据源中拿出数据放到DataSet或Datatable中,让我们的程序使用。同时当我们对dataset或dataTable中的数据做了修改后,我们也可以通过DataAdapter写回数据库。

        

对比

1.      DataReader只能实现数据的查询,而DataAdapter则能实现数据的增删改查

2.      dataReader对内存的占用较小,因为它一次只查一条记录,而使用DataAdapter的查询结果是要放到Dataset或dataTable中的,所以如果数据量大的话,对内存的占用相对也是大的。

3.      使用DataReader是需要与数据库一直保持连接的,直到不在使用,而DataAdapter是根据需要自动打开和关闭数据库的。

    4,DataReader与DataAdapter在作用上并不相同,dataReader相当于一个容器,用来填充数据,而且一次只能填充一条记录,而DataAdapter是用来获取数据的,并把数据填充到数据集上。


下面是两个示例来说明,DataReader与DataAdapter在使用上的不同


DataReader的使用,通过使用while循环我们也可以看出dataReader一次是记录一条数据,而其中的Read()来前进到下一条记录。

<span style="white-space:pre"></span>//连接数据库,建立Command对象            String connstr = "data source=.;database=Library;uid=sa;pwd=123456;";            SqlConnection  con = new SqlConnection(connstr);            con.Open();                      SqlCommand mycommand = new SqlCommand("select * from T_admin", con);                   //定义DataReader对象            SqlDataReader myreader;                    //执行查询,填充DataReader            myreader = mycommand.ExecuteReader();            String Name = myreader.GetName(1); //获取指定列的名称;                       while (myreader.Read())//前进到下一条记录(默认指向第一行数据之前)            {                               String Value1 = myreader[2].ToString();//得到行数据的第三个字段的值                String Value2 = myreader.GetString(2);//同上                String Value3 = myreader["adminPWD"].ToString();//同上                           }            myreader.Close();//关闭sqlDataReader对象            con.Close();//关闭与数据库的连接,释放使用的资源。

DataAdapter的使用


<span style="white-space:pre"></span>//建立数据库的连接,并打开            String connstr = "data source=.;database=Library;uid=sa;pwd=123456;";            SqlConnection con = new SqlConnection(connstr);            con.Open();                       SqlCommand mycommand = new SqlCommand("select * from T_admin", con);                       SqlDataAdapter ad = new SqlDataAdapter();        //获取sql命令对象mycommand            ad.SelectCommand  = mycommand;            DataTable dt = new DataTable();        //填充数据集            ad.Fill(dt);        //关闭连接            con.Close();


















0 0
原创粉丝点击