SqlDataReader myReader;
......
while(myReader.Read())
{
一般就读10来行数据,大家都用什么方法去读?
}

解决方案 »

  1.   

    看你有什么功能要求,如果你需要精确定位数据集的某条记录,那么用dataset比较好,如果仅仅是绑定显示而且不对其修改那么datareader比较不错
      

  2.   

    看情况咯
    Reader和DataSet都用
      

  3.   

    像这种情况用数据适配器去读就可以了(SqlDataAdapter),因为SqlDataReader做起来还是相对麻烦些,且SqlConnection被占用.
      

  4.   

    使用GotDotNet.ApplicationBlocks.Data
    没有发言权
      

  5.   

    sqlserver用ApplicationBlocks.Data最合适了,
    可以适当剪裁一下,里面overload太多了,大半不常用。
    oracle可以仿照ApplicationBlocks.Data自已做一个。
      

  6.   

    我用dataset,如果数据比较大的情况下就用SP了
      

  7.   

    1、读取一条记录的时候用 DataReader2、读取多条记录但是每一条记录只取一两条记录 的时候用 DataReader3、其他的时候尽量用 DataTable 4、一次返回多个记录集的时候用 DataSet 。
      

  8.   


    这种情况在Asp.net中要用数据绑定才好啊不知道你是不是要做三层http://www.51aspx.com/Tags/2
      

  9.   

    同意楼上的
    1、读取一条记录的时候用 DataReader2、读取多条记录但是每一条记录只取一两条记录 的时候用 DataReader3、其他的时候尽量用 DataTable 4、一次返回多个记录集的时候用 DataSet 。
      

  10.   

    补充一条5、不要用 DataReader 来绑定控件,因为会增加数据库连接的open时间。就是多占用了宝贵的连接资源。
      

  11.   

    尽量用DataReader 读取的数据的时候通过实体类传递
      

  12.   

    我自己常用的方法,1、通过实体类传递。2、通过DataTable。
    不知道好不好,或者是否还有更好的方法。
      

  13.   

    同意楼上。
    读取完了就关闭DataReader。这家伙独占数据库连接。
      

  14.   

    有人说不要用 DataReader 来绑定控件,因为会增加数据库连接的open时间。就是多占用了宝贵的连接资源,那么请问,在填充dataset、datatable时是不是也有时间?dataset、datatable是不是还要实例化过程、填充过程?如果我取20行数据,用什么好啊。如果是一行呢?
      

  15.   

    添充DataTable的时间是比较固定的,是比较短的。添充DataTable 相当于象数组里添加数据。而绑定控件的时间是和控件的复杂程度有关的,越复杂的所需的时间就越长。(这里的控件指的是显示用的控件,比如DataGrid Repeater等)绑定控件实际上是组合字符串(HTML格式的),记录越多,控件越复杂,最后生成的字符串就越大,大家都知道,对于字符串的处理是比较慢的(至少比数组慢),尤其是一点一点加上去的字符串。(控件越复杂) 指的是 有很多<table><TR><TD> <DIV> 这样的html代码。
      

  16.   

    我想问楼上大哥,比如我做首页,大概有10个以上的地方需要显示前10条记录,用什么方式好呢?
    用dataset一次返回,绑定
    还是datatable多次读库返回,绑定
    请问:使用Repeater控件快,还是自己StringBuder构造,缓存,并用lable显示,哪种较好啊?
      

  17.   

    有人说不要用 DataReader 来绑定控件,因为会增加数据库连接的open时间。就是多占用了宝贵的连接资源,那么请问,在填充dataset、datatable时是不是也有时间?dataset、datatable是不是还要实例化过程、填充过程?如果我取20行数据,用什么好啊。如果是一行呢?
    ------------------
    如果你直接用IDataReader绑定控件,那么在数据绑定完之前,Connection一直都没有关闭(特别是你用SqlHelper时),这样对数据库造成的压力就会很大
      

  18.   

    SqlDataAdapter这个功能要好些,SqlDataReader 是只进的,读取的速度也慢,内容也要少的少。
      

  19.   

    我想问楼上大哥,比如我做首页,大概有10个以上的地方需要显示前10条记录,用什么方式好呢?
    用dataset一次返回,绑定
    还是datatable多次读库返回,绑定
    请问:使用Repeater控件快,还是自己StringBuder构造,缓存,并用lable显示,哪种较好啊?================这个就是一个很复杂的情况了。涉及到很多的因素。先说一下我的做法吧。第一种:(以前的方式)
    1、写一个存储过程,返回所有所需的记录集,比如写上10个select 语句,一次性返回十个记录集。2、填充到DataSet里面,因为记录集大于1。等于一的话就直接使用DataTable。3、然后帮定到十个Repeater 控件上。4、绑定的方式:<%# ((DataRowView)Container.DataItem)["CityID"] %>  (比较快)
    不要使用 <%# DataBinder.Eval(Container, "DataItem.City")%>(很慢)(绑定方式的具体测试 http://blog.csdn.net/jyk/archive/2006/03/15/625389.aspx)其实最后的绑定方式是很重要的,因为效率差很多,其它的效率差的不是太大。
    第二种:自己写一个结构数组来存放记录集,然后在页面上用循环的方式显示数据(有点asp的感觉)。添充结构数组就可以使用DataReader来填充。
    ===========
    要想证明到底谁更好,最好的方式就是写一个程序测试一下,但是由于因数太多,测试情况也就很多,刚才大陆的想了一下:数据源 两个 DataTable DataReader记录数 三种 1条、十条、一百条。(也可以是其他的情况) 控件   两个 DataGrid、Repeater (其他)绑定方式 两种 就是上面写的两种测试 三种 只fill数据、只绑定数据、先fill在绑定2*3*2*2*3 = 72种要想测试全面一点的话至少需要30多个测试。
      

  20.   

    以前的讨论:http://topic.csdn.net/T/20060315/18/4616896.html
      

  21.   

    看你的设计了,microsoft的design group有一个类似ORM的东西可以用来读数据。 不借用代码生成的话可以自己构建Entities Class定义数据结构,或者用Dataset来表示你的Entities。 数据库的接口部分可以用Database Factory来读,可以直接用SQL Command 或者存贮过程。
      

  22.   

    大家共享点代码,比如刚才所说的,使用dataset\datatable\datareader的读取代码
      

  23.   

    在网上找的,这样就是 DataReader 绑定控件?我从没这样用过。//定义数据库链接对象
    SqlConnection mycon=new SqlConnection(ConfigurationSettings.AppSettings["connstring"]);
    //上面connstring为web.config中的数据库连接字符串
    SqlCommand mycmd=mycon.CreateCommand();
    mycmd.CommandText="打开数据库的语句";
    try
    {
        mycon.open();
        SqlDataReader mydr=mycmd.ExecuteReader();
        DataGrid.DataSource=mydr;
        DataGrid.DataBind();
    }
    finally
    {
        mycon.disponse();//关闭数据库链接
    }
      

  24.   

    SqlDataReader mydr=mycmd.ExecuteReader();
        DataGrid.DataSource=mydr;
        DataGrid.DataBind();这个就是mycon.Close() 就是关闭数据库了。mycon.disponse();//是销毁对象。只是 SqlConnection 比较特殊,
      

  25.   

    以前用DataTable
    现在可能用泛型集合
      

  26.   

    为什么不用ibatis,又简单又高效。
      

  27.   

    ApplicationBlocks.Data事务处理的相当的不好
    他是通过业务层调用数据层来实现事务的
    最好的办法是通过业务层调用业务层来实现事务