当前位置:编程学习 > C#/ASP.NET >>

asp.net大数据量分页,数据库是oracle

asp.net网站,数据库是oracle,数据绑定到GridView上,实现分页
现在用的分页是查询所有在分页,这样如果数据很多的话,就会很慢
在网上查,很多人都说用分页存储过程

求一个分页的存储过程(oracle数据库)
还有就是存储过程建好后,应该怎么调用,在aspx.cs里应该怎样写GridView实现分页

请详细说明下啊,新手很多地方都不懂啊,有完整的例子最好啊 --------------------编程问答-------------------- oracle有个rowid的吧 --------------------编程问答-------------------- 1:select * from ( select row_.*, rownum rownum_ from ( query_SQL ) row_ where rownum =< max) where rownum_ >= min

2:SELECT  TOP  10 *   FROM  TestTable WHERE(ID>(SELECT MAX(id) FROM(SELECT TOP20 id  FROM  TestTable ORDERBYid)AS T))ORDERBY ID SELECT  TOP  页大小* FROM  TestTable WHERE(ID>(SELECT MAX(id) FROM(SELECT TOP 每页大小*待查询页数-1  id FROM 表  ORDERBY id)AS T)) ORDERBY ID 
思路:先获得待查询页的之前全部条数id,获得它们当中最大的ID号,以此最大ID号为标志,查找比这个ID号大的指定条数  --------------------编程问答-------------------- http://www.cnblogs.com/hnsdwhl/archive/2011/09/04/2166522.html --------------------编程问答-------------------- 说错了,rownum哈 --------------------编程问答--------------------
引用 3 楼 conan8126 的回复:
http://www.cnblogs.com/hnsdwhl/archive/2011/09/04/2166522.html

这个应该怎样运用到分页上 --------------------编程问答--------------------
引用 2 楼 legendlovehao 的回复:
1:select * from ( select row_.*, rownum rownum_ from ( query_SQL ) row_ where rownum =< max) where rownum_ >= min

2:SELECT  TOP  10 *   FROM  TestTable WHERE(ID>(SELECT MAX(id) FROM(SELECT TOP20 id……

能不能说的具体点,不懂啊 --------------------编程问答--------------------
引用 6 楼 liangtianheng 的回复:
引用 2 楼 legendlovehao 的回复:1:select * from ( select row_.*, rownum rownum_ from ( query_SQL ) row_ where rownum =< max) where rownum_ >= min

2:SELECT  TOP  10 *   FROM  TestTable WHERE(I……


你懂sql吗?
不懂的话那就没办法了。 --------------------编程问答-------------------- 缓存!sql创建索引! 临时表分页!

单纯的存储过程 解决不了很大的数据量! --------------------编程问答--------------------

ASP.NET调用oracle存储过程实现快速分页 --------------------编程问答--------------------
引用 9 楼 fengyarongaa 的回复:
ASP.NET调用oracle存储过程实现快速分页

这个在数据库里运行出错:Warning: compiled but with compilation errors
--------------------编程问答-------------------- 用分页存储过程配合AspNetPager实现分页:http://www.webdiyer.com/controls/aspnetpager --------------------编程问答-------------------- LZ 可以去看看 基本上可以满足你的需求

http://blog.csdn.net/xiaolongit/article/details/8286463 --------------------编程问答-------------------- http://blog.csdn.net/xiaolongit/article/details/8286463[/url] --------------------编程问答--------------------
引用 12 楼 xiaolongit 的回复:
LZ 可以去看看 基本上可以满足你的需求

http://blog.csdn.net/xiaolongit/article/details/8286463


sql procdure code:

create   proc [dbo].[MyPages](
 @tableName varchar(155),
 @pageIndex int,
 @pageSize int,
 @pageCurrent int output,
 @pageNumber int output,  --总页数 
 @pageCount int output, --总记录
 @clickType varchar(15)=null,--点击按钮的类型
 @keyId varchar(15),
 @columnName varchar(255),
 @strWhere varchar(1000)
)
as
declare @totalCount int
declare @strCount nvarchar(155)
declare @strSql  nvarchar(1000)

set nocount on
set @strCount='SELECT @totalCount=COUNT(*) FROM '+ @tableName+' WHERE '+@strWhere
exec sp_executeSql @strCount,N'@totalCount int out',@totalCount=@pageCount out
 if(@pageCount%@pageSize=0)
  set @pageNumber=(@pageCount/@pageSize)
 else
  begin
  set @pageNumber=(@pageCount/@pageSize)+1
  end
--if(@strWhere='')begin set @strWhere='1=1' end
if(@clickType!='')begin
  if(@clickType='pre')begin
    set @pageIndex=(@pageIndex-1)
  end
  else if(@clickType='next')begin
    set @pageIndex=(@pageIndex+1)
  end
end
set @pageCurrent=@pageIndex
set @strSql='SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY '+@keyId+' DESC) AS Row,'+@columnName+' FROM '+@tableName+' WHERE '+ @strWhere+' ) TT WHERE TT.Row BETWEEN '+str((@pageIndex-1)*@pageSize+1)+' AND '+str(@pageIndex*@pageSize)
exec (@strSql)
set nocount off

这个存储过程你用过么,运行:无效的SQL语句,把这个“sql procdure code:”这个去掉:ORA-00901: 无效 CREATE 命令 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 嗯,可以用的 sql procdure code:去掉 --------------------编程问答-------------------- demo
SELECT * FROM
(
    SELECT a.*, rownum r__
    FROM
    (
     SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
     ORDER BY OrderDate DESC, ShippingDate DESC
    ) a
    WHERE rownum < ((pageNumber * pageSize) + 1 )
)
WHERE r__ >= (((pageNumber-1) * pageSize) + 1)
--------------------编程问答-------------------- 参考http://www.cnblogs.com/gisdream/archive/2011/11/16/2251687.html --------------------编程问答--------------------
引用 18 楼 Chinajiyong 的回复:
参考http://www.cnblogs.com/gisdream/archive/2011/11/16/2251687.html

这里面很详细了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,