java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
出错源代码:public Page getPage(int currNo,int pageSize,int type) {
List<goods_detail> list=new ArrayList<goods_detail>();
StringBuffer sql=new StringBuffer(" SELECT `id`,`sortId`,`name`,`address`,`price`,`createDate`,`remaining` FROM `goods_detail` ");
ResultSet rs=null;
//---------------开始------------------------
if(type!=0){
sql.append(" WHERE sortId=? ");
}
sql.append(" ORDER BY id DESC LIMIT ?,? ");
rs=this.executeQuery(sql.toString(),type, (currNo-1)*pageSize,pageSize);
}
解析:当type=0时,sql=" SELECT `id`,`sortId`,`name`,`address`,`price`,`createDate`,`remaining` FROM `goods_detail` ORDER BY id DESC LIMIT ?,? ";
rs=this.executeQuery( sql.toString(), type, (currNo-1)*pageSize,pageSize);
此时,其实只需要有两个参数,但是,实际传入了三个参数,导致参数索引越界。
解决办法:只需要针对type为0,和不为0情况处理即可。
public Page getPage(int currNo,int pageSize,int type) {
List<goods_detail> list=new ArrayList<goods_detail>();
StringBuffer sql=new StringBuffer(" SELECT `id`,`sortId`,`name`,`address`,`price`,`createDate`,`remaining` FROM `goods_detail` ");
ResultSet rs=null;
if(type!=0){
sql.append(" WHERE sortId=? ");
sql.append(" ORDER BY id DESC LIMIT ?,? ");
rs=this.executeQuery(sql.toString(),type, (currNo-1)*pageSize,pageSize);
}
if(type==0) {
sql.append(" ORDER BY id DESC LIMIT ?,? ");
rs=this.executeQuery(sql.toString(), (currNo-1)*pageSize,pageSize);
}
}