Parameter index out of range(1 > number of parameters, which is 0)参数索引超出范围

 

今天在写项目的过程中,有一个模块是做多选删除操作,通过servlet获得多选框的value组,然后执行sql操作。如下:

 1 @RequestMapping( "/delteCouse.do" )
 2     public void delCouse( HttpServletRequest req, HttpServletResponse resp ) throws SQLException {
 3     
 4     //处理中文
 5     try {
 6         req.setCharacterEncoding("UTF-8");
 7     } catch (UnsupportedEncodingException e) {
 8         e.printStackTrace();
 9     }
10     resp.setContentType("text/html;charset=utf-8");
11     
12     //获取页面传来的值:选中的框的value
13     String courIndex[] = req.getParameterValues("couIndex");
14     
15     //根据选中的框的个数,动态生成同样个数的动态占位符
16     String number = null;
17     for (int j = 0; j < courIndex.length; j++) {
18         number +=",?";
19     }
20 
21     //SQL语句:添加动态生成的?占位符,满足用户的任意多选操作
22     String sqlString = "DELETE FROM courses WHERE course_id IN (" + number + ")";
23     
24     Connection con = myConnection.getConnection();
25     PreparedStatement pStatement = con.prepareStatement(sqlString);
26 
27     //动态设置占位符位置的值
28     for (int j = 0; j < courIndex.length; j++) {
29         pStatement.setString(j+1,courIndex[j]);
30     }
31     
32     //执行SQL
33     pStatement.executeUpdate();
34     //关闭链接
35     con.close();
36     
37     }

测试的时候发现,报500错误:Parameter index out of range(1 > number of parameters, which is 0),还以为存放value的数组和给占位符之间的索引不对应(占位?符从1开始,数组索引从0开始),然而检查了没有毛病,头就大了,检查很久发现是中英文问题!,我的占位问号是中文的!

修改:

我的天,哈哈,查别还是比较大的,但是不容易注意到啊,所以说经验真的重要了,有时候不是什么大难题,就是个没注意到的小问题~,

 

posted @ 2018-09-06 23:42  四叶笔记  阅读(770)  评论(0编辑  收藏  举报