微软Ado.net的分页存储过程是若何实现的?

微软Ado.net的分页存储过程是若何实现的?,第1张

sql2005起头,有rownumber()函数,可觉得发芽结不美观生成序号,也就能分页了sql2000只能靠top进行倒腾ado.net可以在客户端销毁不用的记适ё儋返回,怎么都可以

第一,不能使用SELECT * XXX ,这是性能大忌。

第二,没有什么机器能一次性读取海量数据而耗时很少。

第三,处理海量数据的时候,一般都是使用存储过程把大量数据分页,

每次仅仅提取其中的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()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9899538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存