我的程序可以采用以下两种方式,我想请教一下前辈们,那种更快,更效率,谢谢
 
 1)DataSet ---> DataView ----> DataView ---->DataList
 
 2)数据库 ----> DataSet---->DataList
每次Page_Load()都会有5次以上的事件发生,每次从数据库读取都只读前10条。
是哪种更有效率,还是分配一下,每种来几样?
谢谢前辈们指教

解决方案 »

  1.   

    如果对读出的数据不做其他什么操作,只是单纯的显示,那用datareader更快
      

  2.   

    哦!那我还想问一下,DataList的DataSource能不能直接绑datareader,如果不能得话,在把datareader的数据赋给一个DataView或者table,速度能超过DataSet 吗?谢谢前辈
      

  3.   

    当确定应用程序应使用 DataReader还是应使用 DataSet时,应考虑应用程序所需的功能类型。DataSet 用于执行以下功能: 1、在层间或从 XML Web services 对数据进行远程处理。 
    2、与数据进行动态交互,例如绑定到 Windows 窗体控件或组合并关联来自多个源的数据。 
    3、在应用程序本地缓存数据。 
    4、提供关系数据的分层 XML 视图并使用 XSL 转换或 XML 路径语言 (XPath) 查询等工具来处理数据。 
    5、对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。 如果不需要 DataSet 所提供的功能,则可以使用 DataReader 以只进只读方式返回数据,从而提高应用程序的性能。虽然 DataAdapter 使用 DataReader 来填充 DataSet 的内容(请参见从 DataAdapter 填充 DataSet),但可以使用 DataReader 来提高性能,因为您将节省 DataSet 所使用的内存,并将省去创建 DataSet 并填充其内容所需的必要处理。
      

  4.   

    可以啊,如
    private void Page_Load(object sender, System.EventArgs e)
    {
    string mySelectQuery = "SELECT * FROM a";
    string myConnString=System.Configuration .ConfigurationSettings .AppSettings["ConnectionString"];
    SqlConnection myConnection = new SqlConnection(myConnString);
    SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
    myConnection.Open();
    SqlDataReader myReader;
    myReader = myCommand.ExecuteReader();
    this.DataList1.DataSource=myReader;
    this.DataList1.DataBind();
    }-------------
    <asp:DataList id="DataList1" style="Z-INDEX: 101; LEFT: 176px; POSITION: absolute; TOP: 128px" runat="server">
    <SelectedItemTemplate>
    </SelectedItemTemplate>
    <ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem, "dlb") %>
    </ItemTemplate>
    <AlternatingItemTemplate>
    </AlternatingItemTemplate>
    <EditItemTemplate>
    </EditItemTemplate>
    </asp:DataList>