但它有优点也有缺点。它要求
排序字段必须构成一个惟一的记录,并且在选择字段列表中不允许具有相同名称的字段。
虽然sql2k5以上版本提供的行号()分页
处理,开发利用更是SQL2K
复制代码代码如下所示:
采用system.collections.generic;
唱
系统;
使用system.text;
X
页面结构更改后的SQL语句
X
公共静态类paginghelper
{
X
只需获取分页SQL语句,即可构成惟一的记录排序字段。
X
记录总数
只记录每一页的数量
更改当前页
X的SQL
查询 只是排序字段,多次使用,分离
公共分页sql语句
字符串createpagingsql(int _recordcount,int _pagesize,int _pageindex,字符串_safesql)
{
重新组合排序字段,防止
错误 字符串{ } arrstrorders = _orderfield.split(新字符{} {,},stringsplitoptions。removeemptyentries);
StringBuilder sboriginalorder =新(StringBuilder); / /原始排序字段
StringBuilder sbreverseo rder(StringBuilder)=新的
教程; / /相反的字段排序,分页
为(int i = 0;i < arrstrorders.length;i++)
{
我arrstrorders { } =(arrstrorders {我}。饰); / /前去除后的
空间 如果(i)!= 0)
{
Sboriginalorder.append(
Sbreverseorder.append(
}
Sboriginalorder.append(arrstrorders {我});
int = arrstrorders {我}。指数(指数); / /判断是否有提升的迹象
如果(索引> 0)
{
/ /更换提升的标志,分页的要求
布尔标志= arrstrorders {我}。指标(desc
Sbreverseorder.appendformat({ 0 } { 1 }
}
其他的
{
Sbreverseorder.appendformat({ 0 } DESC
}
}
计算页面总数
_pagesize _recordcount:_pagesize = _pagesize = = 0;
int总页面数=(_recordcount + _pagesize - 1)/ _pagesize;
检查当前页面
如果(_pageindex<1)
{
_pageindex = 1;
}
如果(_pageindex >总页数)
{
_pageindex =总页数;
}
StringBuilder sbsql =新StringBuilder();
第一页,直接使用top n,但不用于查询页面
如果(_pageindex = 1)
{
Sbsql.appendformat(选择上{ 0 } *
Sbsql.appendformat(({ 0 })为T
Sbsql.appendformat(为了{ 0 }
}
/最后一页,顶部n的减少
如果(_pageindex =总页数)
{
Sbsql.append(SELECT * FROM );
Sbsql.append(();
Sbsql.appendformat(选择上{ 0 } *
Sbsql.appendformat(({ 0 })为T
Sbsql.appendformat(为了{ 0 }
Sbsql.append()T );
Sbsql.appendformat(为了{ 0 }
}
页面的前半部分/页
如果(_pageindex <(总页数/总页数为2 + 2))
{
Sbsql.append(SELECT * FROM );
Sbsql.append(();
Sbsql.appendformat(选择上{ 0 } *
Sbsql.append(();
Sbsql.appendformat(选择上{ 0 } *
Sbsql.appendformat(({ 0 })为T
Sbsql.appendformat(为了{ 0 }
Sbsql.append()T );
Sbsql.appendformat(为了{ 0 }
Sbsql.append()T );
Sbsql.appendformat(为了{ 0 }
}
第二页页
其他的
{
Sbsql.appendformat(选择上{ 0 } *
Sbsql.append(();
Sbsql.appendformat(选择上{ 0 } *((_recordcount % _pagesize)+ _pagesize *(总页数- _pageindex))))
Sbsql.appendformat(({ 0 })为T
Sbsql.appendformat(为了{ 0 }
Sbsql.append()T );
Sbsql.appendformat(为了{ 0 }
}
返回sbsql.tostring();
}
X
只需记录SQL语句的总数。
X
记录数量有限
X的SQL查询
只记录SQL语句的总数。
字符串createtopnsql(int _n,字符串_safesql)
{
返回string.format(选择上{ 0 } *({ 1 })为T
}
X
只需记录SQL语句的总数。
X
X的SQL查询
只记录SQL语句的总数。
字符串(字符串createcountingsql _safesql)
{
返回string.format(select count(1)作为RecordCount从({ 0 })为T
}
}