出现以下异常: Parameter index out of range (3 > number of parameters, which is 2).

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);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值