小弟新手
目前在做一项目
对于分页问题
要求查询效率要高
想问一下大家有什么有什么好做法另外想问一下
如果用SqlDataAdapter.Fill方法做分页的话效率如何
据说它不用取出所有数据
不知道是不是真的
目前在做一项目
对于分页问题
要求查询效率要高
想问一下大家有什么有什么好做法另外想问一下
如果用SqlDataAdapter.Fill方法做分页的话效率如何
据说它不用取出所有数据
不知道是不是真的
解决方案 »
- asp.net中直接输入网址提示错误信息
- 谁能写出这个验证表达式?写好了就是100分.
- 请问一个ACCESS的问题,请高人帮我一下(如何让过长的数据显示成固定字符串加省略号显示)
- 获取字符串中指定条件的字符
- 求水晶报表采用pull方式,显示刚录入数据库数据的方法
- 大家好.那位高手可以指点下WAP的知识
- 一张1.5G的图片,由于内存有限,无法打开,有什么方法可以把图片不一次都加载入内存,转成jpg这样的网络格式,这样就小了 可以打开了
- 数据库需要使用可更新的操作问题.
- 我押了5000点,如果西班牙不赢,我就穷途末路了!!
- 取得treeview节点名称问题?
- asp.net sqlserver 如何用一段代码来实现查询功能
- flash 8 和 flash mx 2004哪个网络性能比较好,哪个与.net结合更紧密?高手帮忙指点迷津
只要把gridview的分页属性设置为TRUE就可以了
用用存储过程分页,如:
EXEC p_splitpage @sql, @PageIndex ,@PageSize,0p_splitpage 系统存储过程
@sql 为查询语句
@PageIndex 为起始页
,@PageSize 每页多少条记录
0 随便写的 不知道什么意思
http://www.codeproject.com/aspnet/PagingLarge.asp我用的方法:(注意-----)
CREATE PROCEDURE [dbo].[usp_GetCompanyList]
@condition varchar(200),
@pagesize int,
@currentpage int,
@pagecount int out,
@rowcount int out
AS
BEGIN
CREATE TABLE #Temp(
[TempId] [int] IDENTITY(1,1) NOT NULL,
---------------
)
declare @sql varchar(1000)
set @sql = 'INSERT INTO #Temp (------------------)
SELECT ------ FROM [dbo].[Company] as C
join [dbo].[Server] as S on C.[ServerId]=S.[ServerId] where C.[IsDeleted]=0 '
if (@condition is not null and @condition<>'')
begin
set @sql = @sql + ' and ' + @condition
end
set @sql = @sql + ' order by C.[CompanyId] desc' exec(@sql) --返回总记录数
select @rowcount = count(0) from #Temp
--返回总页数
set @pagecount = ceiling(@rowcount * 1.0/@pagesize) --临时表的起始Id
declare @FromId int
set @FromId = (@currentpage - 1) * @pagesize + 1
--临时表的结束Id
declare @ToId int
set @ToId = @currentpage * @pagesize select * from #Temp where TempId between @FromId and @ToId
END
----这个是填充dataset和分页有什么关系,没听说过啊
可以在填充的时候指定起始记录和要取记录的数量
--------------------------------------public System.Int32 Fill ( System.Data.DataSet dataSet , System.Int32 startRecord , System.Int32 maxRecords , System.String srcTable )
System.Data.Common.DbDataAdapter 的成员摘要:
在 System.Data.DataSet 的指定范围中添加或刷新行以匹配使用 System.Data.DataSet 和 System.Data.DataTable 名称的数据源中的行。 参数:
dataSet: 要用记录和架构(如果必要)填充的 System.Data.DataSet。
startRecord: 从其开始的从零开始的记录号。
maxRecords: 要检索的最大记录数。
srcTable: 用于表映射的源表的名称。 返回值:
已在 System.Data.DataSet 中成功添加或刷新的行数。这不包括受不返回行的语句影响的行。
在使用的时候
SqlDataAdapter 会从数据库中将所有记录取出吗?
我主要是关心这个问题
其原形是:fill(System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable)
第一个参数:要填充的数据集
第二个参数:要查找的开始记录编号(即从第几条记录开始)
第三个参数:每页的记录个数
第四个参数:表名
例如:startRecord = (curPage - 1) * pageSize,其中curPage是当前页数、pageSize是每页的记录个数,每次刷新页面通过改变startRecord参数来达到分页的目的。
这个方法我用过
我只是想请问它的效率如何?
====================
这得看你Fill的SQL语句
http://blog.csdn.net/banmuhuangci
请看最新的那篇文章