网站首页 > 文章中心 > 其它

go语言处理分页_分页代码怎么实现C语言

作者:小编 更新时间:2023-10-15 18:49:33 浏览量:356人看过

请问这三种方式实现的分页哪个效率最高

参考了

地址:

IF(EXISTS(SELECT * FROM sysobjects WHERE [id]=OBJECT_ID('usp_PagingLarge') AND xtype='P'))

DROP PROCEDURE usp_PagingLarge

*/

GO

CREATE PROCEDURE usp_PagingLarge

go语言处理分页_分页代码怎么实现C语言-图1

@PageSize INT, --每页记录数

@CurrentPage INT, --当前页,0表示第1页

AS

BEGIN

IF @Fields = ''

SET @Fields = '*'

IF @Filter = ''

SET @Filter = 'WHERE 1=1'

ELSE

SET @Filter = 'WHERE ' + @Filter

IF @Group ''

SET @Group = 'GROUP BY ' + @Group

IF @Order ''

SET @Order = REPLACE(REPLACE(@Order, ' asc', ' ASC'), ' desc', ' DESC')

IF CHARINDEX(' DESC', @Order) 0

IF CHARINDEX(' ASC', @Order) 0

IF CHARINDEX(' DESC', @Order) CHARINDEX(' ASC', @Order)

SET @Operator = '='

END

SET @SortColumn = REPLACE(REPLACE(REPLACE(@Order, ' ASC', ''), ' DESC', ''), ' ', '')

SET @pos1 = CHARINDEX(',', @SortColumn)

IF @pos1 0

SET @SortColumn = SUBSTRING(@SortColumn, 1, @pos1-1)

SET @SortTable = @TableNames

SET @SortName = @SortColumn

SET @SortColumn = @PrimaryKey

SET @Order = @SortColumn

DECLARE @prec int

SELECT @type=t.name, @prec=c.prec

FROM sysobjects o

JOIN syscolumns c on o.id=c.id

JOIN systypes t on c.xusertype=t.xusertype

WHERE o.name = @SortTable AND c.name = @SortName

IF CHARINDEX('char', @type) 0

SET @type = @type + '(' + CAST(@prec AS varchar) + ')'

DECLARE @TopRows INT

SET @TopRows = @PageSize * @CurrentPage + 1

print @TopRows

print @Operator

EXEC('

DECLARE @SortColumnBegin ' + @type + '

SET ROWCOUNT ' + @TopRows + '

SELECT @SortColumnBegin=' + @SortColumn + ' FROM ' + @TableNames + ' ' + @Filter + ' ' + @Group + ' ORDER BY ' + @Order + '

SET ROWCOUNT ' + @PageSize + '

')

--调用例子:

--1.单表/单排序

与自定义分页结合例子:

/Files/jiny-z/Paging_Custom.rar

alter PROCEDURE SP_Pagination

/**//*

***************************************************************

** 分页存储过程 **

参数说明:

①Tables :表名称,视图

***************************************************************/

(

@Tables varchar(1000),

@PrimaryKey varchar(100),

@CurrentPage int = 1,

@PageSize int = 10,

@Fields varchar(1000) = '*',

@Filter varchar(1000) = NULL,

@Group varchar(1000) = NULL,

@docount bit = 0

)

/**//*默认排序*/

IF @Sort IS NULL OR @Sort = ''

SET @Sort = @PrimaryKey

DECLARE @SortTable varchar(100)

DECLARE @SortName varchar(100)

DECLARE @type varchar(100)

/**//*设定排序语句.*/

IF CHARINDEX('DESC',@Sort)0

SET @strSortColumn = REPLACE(@Sort, 'DESC', '')

SET @operator = '='

IF CHARINDEX('ASC', @Sort) = 0

SET @strSortColumn = REPLACE(@Sort, 'ASC', '')

IF CHARINDEX('.', @strSortColumn) 0

SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))

SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))

SET @SortTable = @Tables

SET @SortName = @strSortColumn

/**//*默认当前页*/

IF @CurrentPage 1

SET @CurrentPage = 1

/**//*设置分页参数.*/

/**//*筛选以及分组语句.*/

IF @Filter IS NOT NULL AND @Filter != ''

SET @strFilter = ' WHERE ' + @Filter + ' '

SET @strSimpleFilter = ' AND ' + @Filter + ' '

SET @strSimpleFilter = ''

SET @strFilter = ''

IF @Group IS NOT NULL AND @Group != ''

SET @strGroup = ' GROUP BY ' + @Group + ' '

SET @strGroup = ''

declare @cTemp NVarChar(1000)

declare @PageCount int, @lineCount decimal

CREATE TABLE #temp(linecount INT)

set @cTemp = 'insert into #temp (linecount) select count(*) FROM ' + @Tables + @strFilter + ' ' + @strGroup

exec (@cTemp)

select @lineCount = linecount from #temp

drop table #temp

if(@docount=1)

begin

select @lineCount '总行数'

end

else

--得到总页数

if @CurrentPage @PageCount

/**//*执行查询语句*/

set @cTemp = 'DECLARE @SortColumn ' + @type + '

SET ROWCOUNT ' + @strStartRow + '

SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '

SET ROWCOUNT ' + @strPageSize + '

SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + ''

--print @cTemp

EXEC(@cTemp)

-----------------------------------------------------

分页查询的方法已经很多很多,今天这一节我也加入成为其中一员.

SQL Server中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询.先来说说实现方式:

①.、我们来假定Table中有一个已经建立了索引的主键字段ID(整数型),我们将按照这个字段来取数据进行分页.

看看Set Rowcount怎么来帮我们的忙吧:

Declare @ID int

Declare @MoveRecords int

--下面两行实现快速滚动到我们要取的数据的行,并把ID记录下来

Set Rowcount @MoveRecords

Select @ID=ID from Table1 Order by ID

Set Rowcount @PageSize

--最恨为了减少麻烦使用*了,但是今天这一节为了说明方便,暂时用一下

Set Rowcount 0

大家可以试试看,在一个1千W记录的表里面,一下子方翻页到第100页(每页100条),看看有多快!

分享]千万数量级分页存储过程(带效果演示)

效果演示:

** 千万数量级分页存储过程 **

@Group varchar(1000) = NULL

DECLARE @strFilter varchar(1000)

DECLARE @strSimpleFilter varchar(1000)

DECLARE @strGroup varchar(1000)

EXEC(

'

DECLARE @SortColumn ' + @type + '

SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '

注:

①.)如表名参数为多表连接时,sort列必须指定表名;

在同一页面中如何实现查询并分页显示结果

建立access的数据库news,还有表news,表的字段(id,title),id唯一,输入数据保存,用下面代码可查询,可分页

-----------------------下面保存为search.asp--------------------------

html

head

title文件/title

/head

body bgcolor="#ffffff"

script

function btn_ck_bh_Click()

{

var cx = document.form1.cxsj.value;

form1.action ="search.asp?cx="+cx;

}

/script

tr

form method="POST" name="form1" action=search.asp

/form

/td

/tr

/table

%

'数据库查询

'获得搜索内容

cx = request("cx")

dim pageCount

'把page转换成整数

page = cint(request("page"))

set conn=server.createobject("adodb.connection")'

set rs=server.createobject("adodb.recordset")

conn.open "DBQ=" server.mappath("./news.mdb") ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

' 获取产品的名字记录集(从 news表中)

if cx "" then

sql = "select * from news where title like '%"cx "%' order by id desc"

sql ="select * from news order by id desc"

end if

'如果没有数据记录

if rs.bof then

errmsg=errmsg+"br"+"li"+keyword+"没有记录,请返回!!"

response.write errmsg

response.end

' 设置记录集在每页的总行数,也就是 PageSize属性

'把rs.pageCount转换成整数和page才能作比较

pageCount = cint(rs.pageCount)

' 设置当前的页号( AbsolutePage属性)

if page = 0 then

page =1

RS.AbsolutePage = page

x=1

' 显示当前页中的所有记录( PageSize中设置的行数)

WHILE NOT RS.EOF AND NumRowsRS.PageSize

%RS.MoveNext

NumRows=NumRows+1

WEND%

%if page=1 then%首页%end if%

%if page1 then%

A HREF="search.asp?page=1cx=%=cx%" 首页/A

%end if%★

%if page1 then%A HREF="search.asp?page=%=page-1%cx=%=cx%"%end if%上一页/a

dim pagewhere

dim p

p = 1

'把pagewhere转换成整数

'pagewhere = cint(request("pagewhere"))

pagewhere = pageCount

if pagewhere0 then

for p=1 to pagewhere

if p page then%

A HREF="search.asp?page=%=p%cx=%=cx%"%=p%/a

%end if

if p =page then%

%=p%

% end if

next

end if%

%if page PageCount then%

A HREF="search.asp?page=%=page+1%cx=%=cx%"

%end if %下一页/A★

%if page=PageCount then%尾页

%end if%

%if pagePageCount then%

A HREF="search.asp?page=%=PageCount%cx=%=cx%" 尾页/A

/p/FONT/td /tr tr

/body/html

rs.close

Set rs=nothing

conn.close

set conn=nothing

分页页数太多怎么处理?

分页存储过程如果按主键来排序,速度还是比较快的,但是如果按照LIKE条件查询字符串,那速度会下降很多,排序字段是个非常关键的因素,提供一个存储过程,调用这个存储赛程就可以了,参考如下:

CREATE PROC proc_pageview

@tbname sysname, --要分页显示的表名

@FieldKey nvarchar(1000), --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段

@PageCurrent int=1, --要显示的页码

@PageSize int=10, --每页的大小(记录数)

@FieldShow nvarchar(1000)='', --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段

@FieldOrder nvarchar(1000)='', --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC

@Where varchar(1000)='', --查询条件

@RecordCount int OUTPUT --总页数

SET NOCOUNT ON

--检查对象是否有效

IF OBJECT_ID(@tbname) IS NULL

RETURN

IF OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTable')=0

AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsView')=0

AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTableFunction')=0

--分页字段检查

IF ISNULL(@FieldKey,N'')=''

--其他参数检查及规范

IF ISNULL(@PageCurrent,0)1 SET @PageCurrent=1

IF ISNULL(@PageSize,0)1 SET @PageSize=10

IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'

IF ISNULL(@FieldOrder,N'')=N''

SET @FieldOrder=N''

SET @FieldOrder=N'ORDER BY '+LTRIM(@FieldOrder)

IF ISNULL(@Where,N'')=N''

SET @Where=N''

IF @RecordCount IS NULL

SET @sql=N'SELECT @RecordCount=COUNT(*)'

--计算分页显示的TOPN值

--第一页直接显示

IF @PageCurrent=1

--处理别名

IF @FieldShow=N'*'

SET @FieldShow=N'a.*'

--生成主键(惟一键)处理条件

@s nvarchar(1000),@Field sysname

WHILE CHARINDEX(N',',@s)0

SELECT @Field=LEFT(@s,CHARINDEX(N',',@s)-1),

@s=STUFF(@s,1,CHARINDEX(N',',@s),N''),

WHEN @Where='' THEN N'WHERE ('

ELSE @Where+N' AND ('

--执行查询

GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下)

为此,您将编写以下内容:

①.、编写代码

a.添加代码以将专辑数据添加到专辑列表.

在此代码中:

①.)用于Context.BindJSON 将请求正文绑定到newAlbum.

b.更改您的main函数,使其包含该router.POST函数,如下所示.

①.)将路径中的POST方法与 /albumspostAlbums函数相关联.

a.如果服务器从上一节开始仍在运行,请停止它.

b.从包含 main.go 的目录中的命令行,运行代码.

c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求.

该命令应显示添加专辑的标题和 JSON.

d.与上一节一样,使用curl检索完整的专辑列表,您可以使用它来确认添加了新专辑.

该命令应显示专辑列表.

为此,您将:

a.在您在上一节中添加的函数下方postAlbums,粘贴以下代码以检索特定专辑.

此getAlbumByID函数将提取请求路径中的 ID,然后找到匹配的专辑.

(1)Context.Param用于从 URL 中检索id路径参数.当您将此处理程序映射到路径时,您将在路径中包含参数的占位符.

如上所述,实际使用中的服务可能会使用数据库查询来执行此查找.

b.最后,更改您的main,使其包含对router.GET的新调用,路径现在为/albums/:id ,如以下示例所示.

(1)将/albums/:id路径与getAlbumByID功能相关联.在 Gin 中,路径中项目前面的冒号表示该项目是路径参数.

b.在包含 main.go 的目录中的命令行中,运行代码以启动服务器.

该命令应显示您使用其 ID 的专辑的 JSON.如果找不到专辑,您将收到带有错误消息的 JSON.

恭喜!您刚刚使用 Go 和 Gin 编写了一个简单的 RESTful Web 服务.

本节包含您使用本教程构建的应用程序的代码.

beego数据怎么分页page limit

collection.find().toArray(function(err,docs){

console.log(docs);

//将数据显示到网页上

// console.log('1'+docs[0].name);

// document.getElementById("editLevels").value =docs;

分页问题

分页例子,对大量数据不行,

大量据数要用存储过程

'连接数据库

'执行sql 改你要的sql

set rs=server.CreateObject("adodb.recordset")%

下面的代码就复制用可以了

'分页

rs.pagesize=i

pu=request("pu")

if pu="" then pu=1

if cint(pu)="0" then pu=1

if cint(pu)rs.pagecount then pu=rs.pagecount

if not rs.eof then rs.absolutepage=cint(pu)

'显示记录

if not rs.eof then

do while not rs.eof and i=1

response.write rs("字段")'显示字段

'就这里改你要的,其它复制用就可以

rs.movenext

i=i-1

loop

当前第 %=pu% 页;分

%=rs.pagecount% 页;

共 %=rs.recordcount% 条记录;

每页%=i%条记录

a href="?pu=1"首 页/a

a href="?pu=%=cint(PU)-1%"上一页/a

a href="?pu=%=cint(PU)+1%"下一页/a

a href="?pu=%=rs.pagecount%"末 页/a

--------------------------------------

asp+存储分页,看一下实现的方法,自己就可以写了

/////////////////分页的代码/////////////

use pubs

go

@pageSize int,

@currentPage int,

@totalPage int output

as

declare @strQuery as varchar(1000)

declare @rowCount as int

select @rowCount=count(title_id)from titles

set @totalPage=CEILING(CAST(@rowCount AS FLOAT)/CAST(@pageSize AS FLOAT))

if @currentPage1

set @strQuery='select top '+cast(@pageSize as varchar

(10))+ ' * from titles

where title_id not in(select top '+cast(@pageSize*(@currentPage-1)as varchar(10))+' title_id from titles order by

title_id)

order by title_id'

set @strQuery='select top '+cast(@pageSize as varchar(10))+'

* from userinfo order by userID'

exec (@strQuery)

运行代码如下,正确运行,declare @total int

以上就是土嘎嘎小编为大家整理的go语言处理分页相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章