您的位置:首页 > 其它

【ADO.net】 DataReader与DataAdapter辨析

2015-08-13 21:28 260 查看
当我们与数据源建立连接并定义了查询命令后,就要从数据源中检索数据了。不同的数据检索形式,自然适应不同的情况,其性能自然也是不同的,这篇文章主要来区分一下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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: