第二,没有什么机器能一次性读取海量数据而耗时很少。
第三,处理海量数据的时候,一般都是使用存储过程把大量数据分页,
每次仅仅提取其中的10几条或者20几条记录,这样才能控制在毫秒以内的响应时间。
对ASP.net的数据库表单分页需要写后台代码的,我这不久前刚写了个SQL的分页处理程序,希望能给你启示,原理是一样的,把语句换下就可以了,我对Oracle数据库了解甚少.前台:
<asp:DataList ID="lstProducts" runat="server" EnableViewState="false" DataKeyField="ProductID" RepeatColumns="6" Width="100%">
<ItemTemplate>
<table style="font-size: 10pt">
<tr><td><a href='ProductDetails.aspx?ProductID=<%# Eval("ProductID") %>' style="color:#0e0e6c" >
<img alt="更多信息" runat="server" style="border-right: 0px solidborder-top: 0px solidborder-left: 0px solidborder-bottom: 0px solid" src='<%# "readImage.aspx?Size=ThumbNail&ProductID=" + Eval("ProductID") %>' id="imgThumbnail" /></a>
</td></tr>
<tr><td><%# DataBinder.Eval(Container.DataItem, "Color") %></td></tr>
<tr><td><%# DataBinder.Eval(Container.DataItem, "Price") %></td></tr>
<tr><td><%# DataBinder.Eval(Container.DataItem, "ProductID") %></td></tr>
<tr><td><a href="AddToCart.aspx?ProductID=<%# DataBinder.Eval(Container.DataItem, "ProductID") %>">放入购物车</a></td></tr>
</table>
</ItemTemplate>
</asp:DataList>
<div style="font-size:small text-align:right">
<asp:HyperLink ID="lnkPrev" runat="server">上一页</asp:HyperLink>
<asp:HyperLink ID="lnkNext" runat="server">下一页</asp:HyperLink>
</div>
后台:
protected void Page_Load(object sender, EventArgs e)
{
int CurrPage = 0
string sSql = ""
//Response.Write("IsPostBack: " + IsPostBack.ToString())
if (Master.SelectedValue == "")
sSql = "SELECT ProductID, Name, ProductNumber, Color , Price FROM Product"
else
sSql = "SELECT ProductID, Name, ProductNumber, Color , Price FROM Product" + " where ProductSubcategoryID=" + Master.SelectedValue
//Response.Write("<br>"+sSql)
DataSet ds = DataAccessHelper.RunQuery(sSql)
PagedDataSource pds = new PagedDataSource()
pds.DataSource = ds.Tables[0].DefaultView
pds.AllowPaging = true
pds.PageSize = 18
if (IsPostBack)
{
CurrPage = 1
}
else
{
if (Request.QueryString["Page"] != null)
CurrPage = Convert.ToInt32(Request.QueryString["Page"])
else
CurrPage = 1
}
pds.CurrentPageIndex = CurrPage - 1
//lblCurrPage.Text = "当前页: " + CurrPage.ToString()
if (CurrPage<pds.PageCount)
{
int NextPage = CurrPage + 1
lnkNext.NavigateUrl = "Products.aspx?Page=" + NextPage.ToString()
}
if (CurrPage >1 &&CurrPage <pds.PageCount)
{
int PrevPage = CurrPage - 1
lnkPrev.NavigateUrl = "Products.aspx?Page=" + PrevPage.ToString()
}
lstProducts.DataSource = pds
lstProducts.DataBind()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)