rs = state.executeQuery("select limit " + (pageNo * 5 - 5) + " 5 * from bean");报错
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit 0 5 * from bean' at line 1
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit 0 5 * from bean' at line 1
你带一个固定值看在查询分析器里是否执行
解释:
用来从(pageNo * 5 - 5)开始查询五个记录,这条sql语句是hsqldb数据库特有的分页语句。(pageNo * 5 - 5)用来计算pageNo这页第一条记录的行号,如果是第一页pageNo = 1,pageNo * 5 - 5 = 0。这里的行号跟咱们平常使用的数组索引一样,0代表第一个条记录,这样我们第一页就会显示0,1,2,3,4五条记录。如果是第二页pageNo = 2,pageNo * 5 - 5 = 5,我们就会在第二页看到5,6,7,8,9五条记录。这样正好与我们预期的一致。
1. select * from tablename <条件语句> limit 100,15从100条记录后开始取15条 (实际取取的是第101-115条数据)2. select * from tablename <条件语句> limit 100,-1从第100条后开始-最后一条的记录3. select * from tablename <条件语句> limit 15相当于limit 0,15 .查询结果取前15条数据
例如 select * from 表 limit 3 这是mysql
select top 3 * from 表 这是sqlserver
如果是access的话,要加个分组语句,要不然会从第30条记录开始查询,
select top 3 * from 表 group by 列, 这是access ,是access数据库一定要加上group by 要不然记录从第30条记录开始查询,这个在无意中发现,刚开始我还以为自己代码有问题呢!跟大家分享一下经验
这样试一下
rs = state.executeQuery("select * from bean limit " + (pageNo * 5 - 5) + ",5 ");