mssql access数据库利用top分页的方法
这篇文章主要讲解了“mssql access数据库利用top分页的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mssql access数据库利用top分页的方法”吧!
复制代码 代码如下:
uusingsystem.collections.generic;singsystem;usingsystem.text;///<summary>///构造分页后的sql语句///</summary>publicstaticclasspaginghelper{///<summary>///获取分页sql语句,排序字段需要构成唯一记录///</summary>///<paramname="_recordcount">记录总数</param>///<paramname="_pagesize">每页记录数</param>///<paramname="_pageindex">当前页数</param>///<paramname="_safesql">sql查询语句</param>///<paramname="_orderfield">排序字段,多个则用“,”隔开</param>///<returns>分页sql语句</returns>publicstaticstringcreatepagingsql(int_recordcount,int_pagesize,int_pageindex,string_safesql,string_orderfield){//重新组合排序字段,防止有错误string[]arrstrorders=_orderfield.split(newchar[]{','},stringsplitoptions.removeemptyentries);stringbuildersboriginalorder=newstringbuilder();//原排序字段stringbuildersbreverseo教程rder=newstringbuilder();//与原排序字段相反,用于分页for(inti=0;i<arrstrorders.length;i++){arrstrorders[i]=arrstrorders[i].trim();//去除前后空格if(i!=0){sboriginalorder.append(",");sbreverseorder.append(",");}sboriginalorder.append(arrstrorders[i]);intindex=arrstrorders[i].indexof("");//判断是否有升降标识if(index>0){//替换升降标识,分页所需boolflag=arrstrorders[i].indexof("desc",stringcomparison.ordinalignorecase)!=-1;sbreverseorder.appendformat("{0}{1}",arrstrorders[i].remove(index),flag?"asc":"desc");}else{sbreverseorder.appendformat("{0}desc",arrstrorders[i]);}}//计算总页数_pagesize=_pagesize==0?_recordcount:_pagesize;intpagecount=(_recordcount+_pagesize-1)/_pagesize;//检查当前页数if(_pageindex<1){_pageindex=1;}elseif(_pageindex>pagecount){_pageindex=pagecount;}stringbuildersbsql=newstringbuilder();//第一页时,直接使用topn,而不进行分页查询if(_pageindex==1){sbsql.appendformat("selecttop{0}*",_pagesize);sbsql.appendformat("from({0})ast",_safesql);sbsql.appendformat("orderby{0}",sboriginalorder.tostring());}//最后一页时,减少一个topnelseif(_pageindex==pagecount){sbsql.append("select*from");sbsql.append("(");sbsql.appendformat("selecttop{0}*",_recordcount-_pagesize*(_pageindex-1));sbsql.appendformat("from({0})ast",_safesql);sbsql.appendformat("orderby{0}",sbreverseorder.tostring());sbsql.append(")ast");sbsql.appendformat("orderby{0}",sboriginalorder.tostring());}//前半页数时的分页elseif(_pageindex<(pagecount/2+pagecount%2)){sbsql.append("select*from");sbsql.append("(");sbsql.appendformat("selecttop{0}*from",_pagesize);sbsql.append("(");sbsql.appendformat("selecttop{0}*",_pagesize*_pageindex);sbsql.appendformat("from({0})ast",_safesql);sbsql.appendformat("orderby{0}",sboriginalorder.tostring());sbsql.append(")ast");sbsql.appendformat("orderby{0}",sbreverseorder.tostring());sbsql.append(")ast");sbsql.appendformat("orderby{0}",sboriginalorder.tostring());}//后半页数时的分页else{sbsql.appendformat("selecttop{0}*from",_pagesize);sbsql.append("(");sbsql.appendformat("selecttop{0}*",((_recordcount%_pagesize)+_pagesize*(pagecount-_pageindex)));sbsql.appendformat("from({0})ast",_safesql);sbsql.appendformat("orderby{0}",sbreverseorder.tostring());sbsql.append(")ast");sbsql.appendformat("orderby{0}",sboriginalorder.tostring());}returnsbsql.tostring();}///<summary>///获取记录总数sql语句///</summary>///<paramname="_n">限定记录数</param>///<paramname="_safesql">sql查询语句</param>///<returns>记录总数sql语句</returns>publicstaticstringcreatetopnsql(int_n,string_safesql){returnstring.format("selecttop{0}*from({1})ast",_n,_safesql);}///<summary>///获取记录总数sql语句///</summary>///<paramname="_safesql">sql查询语句</param>///<returns>记录总数sql语句</returns>publicstaticstringcreatecountingsql(string_safesql){returnstring.format("selectcount(1)asrecordcountfrom({0})ast",_safesql);}}
感谢各位的阅读,以上就是“mssql access数据库利用top分页的方法”的内容了,经过本文的学习后,相信大家对mssql access数据库利用top分页的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。