JavaWeb项目之sql server分页查询

本文介绍了如何将MySQL的分页查询转换为SQL Server的分页查询。在尝试使用offset无法成功的情况下,通过TOP语句实现了分页。遇到只允许带入一个参数的问题,导致出现错误。欢迎有经验的大神提供解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跟着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. 因为能力还是不够,只能带入一个参数,带入两个参数会出现“索引1”超出范围的错误,所以也欢迎大神留言!
  2. 有些带入参数会用 ${pagesize} ,但是我适用了还是出错,用了 “?”,还是出现了索引超出范围的问题,可以试试加括号以及问号是否为英文半角符。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值