跟着up主一步一步做着项目,但up主用的是mysql,而我学的却是sql server,那么mysql的分页语句该怎么变换成sql server呢?
让我们先看看mysql怎么实现分页吧!
cpage:当前页数
pagesize:每页显示条数
Dao文件:
String sql = "select * from 表名 order by id(一般选主键) desc limit ?, ?";
ps = conn.prepareStatement(sql);
//参数赋值:1为limit的第一个问号,2为limit的第2个问号
ps.setInt(1,(cpage-1)*pagesize);
//若总记录数为40条,每页显示5条,第5页的数据是从第20条开始取,所以(cpage-1)*pagesize
ps.setInt(2, pagesize);
我上网搜了很久,有说sql server要用top实现,也有说offset实现,但我可能是sql server版本问题,没办法用offset实现,就用了top语句,最终改成了这个样子。
String sql = "select top 5* from 表名 where id //每页显示5条
not in(
select top (?) id from 表名 order by id
)order by id ";
ps = conn.prepareStatement(sql);
ps.setInt(1,(cpage-1)*5);
总结
- 因为能力还是不够,只能带入一个参数,带入两个参数会出现“索引1”超出范围的错误,所以也欢迎大神留言!
- 有些带入参数会用 ${pagesize} ,但是我适用了还是出错,用了 “?”,还是出现了索引超出范围的问题,可以试试加括号以及问号是否为英文半角符。