SqlDataReader dr=DataAccess.dataReader("select * from blog_Category");
DropDownList1.DataSource=dr;  
DropDownList1.DataTextField="cate_Name";
DropDownList1.DataBind();
==================================
DataTable dt=DataAccess.dataTable("select * from blog_Category");
DropDownList1.DataSource=dt;
DropDownList1.DataTextField="cate_Name";
DropDownList1.DataBind();
=================================
哪个效率高?我感觉
返回整个DataReader 和 DataTable 没区别。后者返回返回放内存中,前者返回也放内存中???
=====================
或者说数据控件的DataSource用DataReader效率会不会高点????

解决方案 »

  1.   

    只是读的情况下当然用DATAREADER
    效率差太多了你的数据库大概是小吧 如果数据量超过10000的话应该能很明显的感觉差别了
      

  2.   

    两个都是可以的..DR的优点是只向前访问,即访问一次后,就不能再次访问了..DS优点是灵活,如果数据加载大了,和DR相比,性能是有损失的...根据你的情况选择.
      

  3.   

    数据少的话reader还是高啊.datareader 和 dataset 各有利弊...有需求决定你的选择
      

  4.   

    数据量少的情况下:DataReader:占用内存少,占用数据库连接时间短DataSet:
    占用内存稍微多一点,占用数据库连接时间短一些
    数据量大的情况下:DataReader:占用内存增加的不多,占用数据库连接时间明显增长DataSet:
    占用内存明显增多,占用数据库连接时间增加的不多
    综合考虑,还是用DataTable的好。
    数据量大的话,用分页显示的方法。
      

  5.   

    另外我怀疑 DataTable是否会有缓存。
      

  6.   

    如果单纯用于数据绑定显示,显然是DataReader效率.
    对于DataReader:占用数据库连接时间明显增长这一说法不太正确.
    因为Adapter.Fill DataSet都是经过DataReader的。
    如果想更高效率,你可以自己写绑定方法。因为键值访问DataReader比索引访问DataReader要慢.
      

  7.   

    请注意:Adapter.Fill DataSet  只是把数据写进内容就可以关闭连接了。而直接用 DataReader 绑定控件的话,那就要等到控件的最后一行创建完成之后才可以关闭连接,如果你的控件比较复杂,比如用了很多的模版列、和复杂的计算,或者使很多跳的记录,那么不会增加数据库的连接时间嘛?