我试图为我的项目创建分页,但是,当我试图从Java代码执行查询时,用于搜索基于关键字的行,我得到0行。但是在mysql数据库中仍然存在超过行。
i try mysql query like:
SELECT SQL_CALC_FOUND_ROWS * FROM books where keyword like '%java%' limit 1,5;
这个查询给我0个结果。
当尝试
时SELECT SQL_CALC_FOUND_ROWS * FROM books where keyword like '%java%' limit 5;
这将给我1个结果,因为我有一行对应的关键字。但是如果结果大于5,那么它不会显示更多的5个结果,我想用它来控制从数据库检索的页面。
请大家帮帮我
limit 1, 5
,如果找到的话,选择第二行开始,总共5条记录。
但是在您的示例中,对于搜索条件,由于只存在一条记录,并且你想从第2条到第6条记录,总共5条记录,结果为空。
改变:
limit 1,5;
:
limit 0, 5; -- to fetch first 5 records from the found
或
limit 5; -- to fetch first 5 records from the found
要查找已查找记录的总数,需要执行
select found_rows()
与SQL_CALC_FOUND_ROWS
配合使用
操作顺序应为:
SELECT SQL_CALC_FOUND_ROWS * FROM books where keyword like '%java%' limit 5;
SELECT FOUND_ROWS();
第二个SELECT
返回一个数字,表示如果不写入LIMIT
子句,第一个SELECT
将返回多少行。
引用: MySQL: Found_Rows ()
如果你想用mysql实现分页,你应该考虑使用一个带占位符的准备语句。例如
SELECT SQL_CALC_FOUND_ROWS * FROM books where keyword like ? limit ?,?;
,然后绑定参数。例如
PreparedStatement ps = con.prepareStatement(
"SELECT SQL_CALC_FOUND_ROWS * FROM books where keyword like ? limit ?,?");
int firstRow = 1;
int pageSize = 5;
ps.setString(1,"%java%");
ps.setInt(2, firstRow);
ps.setInt(3, pageSize);
在http://dev.mysql.com/doc/refman/5.5/en/select.html