出现以下异常: 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);
        }
    }

 


版权声明:本文为qq_41172416原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。