Parameter index out of range (5 > number of parameters, which is 3)

//获取页面修改之前的信息(部分代码)Stringsid=req.getParameter("id");intid=Integer.parseInt(sid);Strin... //获取页面修改之前的信息(部分代码)
String sid = req.getParameter("id");
int id = Integer.parseInt(sid);

String name = req.getParameter("name");
String pass = req.getParameter("pass");
System.out.println(name+"-----------"+pass);
UserDTO userDTO = new UserDTO();

userDTO.setName(name);
userDTO.setPassword(pass);

//sql
String sql = "update p_user set name = ?,password = ?, where id = ?";
Dao dao = new Dao();
int count = dao.getUpdate(sql, userDTO);
String url = "";
if(count > 0){
url = "userList.jsp";
}else{
url = "error.jsp";
req.setAttribute("error", "更新");
}
req.getRequestDispatcher(url).forward(req, resp);

dao层
public int getUpdate(String sql,UserDTO userDTO){
int count = 0;
try {
pre = connection.prepareStatement(sql);
pre.setInt(5,userDTO.getId());
pre.setString(1, userDTO.getName());
pre.setString(2, userDTO.getPassword());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try{
pre.close();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return count;
}
上面多一个逗号,我已经删掉,那里不是主要原因,
Parameter index out of range (5 > number of parameters, which is 3)
展开
 我来答
疏狂山人
2013-06-19 · TA获得超过1940个赞
知道小有建树答主
回答量:395
采纳率:100%
帮助的人:219万
展开全部
pre.setInt(5,userDTO.getId());
这里面的第一个参数对应你上面sql语句里面的第几个问号,
(5 > number of parameters)你一共只有3个问号,所以只能这个数字最大只能是3。5超出最大范围了

所以你可以改成:
pre.setInt(3,userDTO.getId());
或者直接用字段名:
pre.setInt("id",userDTO.getId());
ricky加加
2017-10-22
知道答主
回答量:4
采纳率:0%
帮助的人:3638
展开全部

还有一种情况一共有5个问号,前面三个英文输入的?号,后面两个可能用的中文输入的?.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
R夏至未至H
2013-06-19 · TA获得超过469个赞
知道小有建树答主
回答量:273
采纳率:100%
帮助的人:356万
展开全部
问题很明显吧 你只有三个参数 那个下标 5 不就越界了?

pre = connection.prepareStatement(sql);
pre.setInt(5,userDTO.getId()); ----》 pre.setInt(3,userDTO.getId());
pre.setString(1, userDTO.getName());
pre.setString(2, userDTO.getPassword());
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫薇参星
科技发烧友

2013-06-19 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3615万
展开全部
这句pre.setInt(5,userDTO.getId());应该是pre.setInt(3,userDTO.getId());吧,把5改成3就应该行了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式