求解! java Dao层 mysql分页语句中不带条件时查询有值 为什么带条件时rs.next() 就为false?

qq_37407764 2017-03-27 04:06:39
public Page sall(String s1,int pageSize, int pageNo) {
int rowcount=0;
String sqls = "";
String sql="select count(*) from carbinfo where 1=1";
if(s1!=null&&s1.length()>0){
//System.out.println("1"+s1);
sql+=" and ( name like '%"+s1+"%'" +
"or price like '%"+s1+"%'" +
"or type like '%"+s1+"%'" +
"or ontime like '%"+s1+"%'" +
"or original like '%"+s1+"%'" +
"or mileage like '%"+s1+"%'" +
"or city like '%"+s1+"%'" +
"or states like '%"+s1+"%'" +
"or xprice like '%"+s1+"%' )" ;

}
System.out.println(sql);
rs = commonQuery(sql);
try {
if(rs.next()){
rowcount=rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
commonClose(conn, stmt, rs);
}


List<car> cas=new ArrayList<car>();

String sql2="select * from carbinfo where ? limit ?, ?";
if(s1!=null&&s1.length()>0){
//System.out.println("1"+s1);
sqls+=" ( name like '%"+s1+"%'" +
"or price like '%"+s1+"%'" +
"or type like '%"+s1+"%'" +
"or ontime like '%"+s1+"%'" +
"or original like '%"+s1+"%'" +
"or mileage like '%"+s1+"%'" +
"or city like '%"+s1+"%'" +
"or states like '%"+s1+"%'" +
"or xprice like '%"+s1+"%' )" ;

}else{
sqls+="1=1";
}
System.out.println(sql2);
System.out.println(sqls);
System.out.println(pageSize*(pageNo-1));
System.out.println(pageSize);
rs = commonQuery(sql2,sqls,pageSize*(pageNo-1),pageSize);
try {
System.out.println(rs.next());
while(rs.next()){
car c=new car();
c.setId(rs.getInt("id"));
c.setName(rs.getString("name"));
c.setPrice(rs.getFloat("price"));
c.setBrand(rs.getString("brand"));
c.setType(rs.getString("type"));
c.setOntime(rs.getString("ontime"));
c.setOriginal(rs.getFloat("original"));
c.setMileage(rs.getString("mileage"));
c.setImage(rs.getString("image"));
c.setCity(rs.getString("city"));
cas.add(c);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
commonClose(conn, stmt, rs);
}
return new Page(pageSize,pageNo,rowcount,cas);

}
}

下面是打印结果 先不带条件 后带条件 条件为1
select count(*) from carbinfo where 1=1
select * from carbinfo where ? limit ?, ?
1=1
0
2
true
com.mstf.bean.car@7cef307c
com.mstf.bean.Page@108b736

下面的sql语句拿到mysql数据库中是有多个结果的

select count(*) from carbinfo where 1=1 and ( name like '%1%'or price like '%1%'or type like '%1%'or ontime like '%1%'or original like '%1%'or mileage like '%1%'or city like '%1%'or states like '%1%'or xprice like '%1%' )
select * from carbinfo where ? limit ?, ?
( name like '%1%'or price like '%1%'or type like '%1%'or ontime like '%1%'or original like '%1%'or mileage like '%1%'or city like '%1%'or states like '%1%'or xprice like '%1%' )
0
2
false
com.mstf.bean.Page@63a3bd86



...全文
215 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37407764 2017-03-27
  • 打赏
  • 举报
回复
sql语句在数据库没有问题 是有结果的
dzhengt 2017-03-27
  • 打赏
  • 举报
回复
你将你的sql拉到数据库执行下,你看是否可以查到数据。目测你应该sql写的有问题: eg: select * from table_name where 1=1 and (column like '%keyword%' or ...) limit start_row ,end_row;

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧