【发布时间】:2014-05-09 10:06:13
【问题描述】:
我有十一个字段要插入到数据库中。显示的错误是我的 12 参数未定义,即 ps.executeUpdate()。我应该怎么办?
我的插入方法如下。
public void update(User user){
try{
Connection conn = DbUtils.getConnection();
PreparedStatement ps = conn.prepareStatement("UPDATE db.db set id = ?,username = ?,password = ?,firstname = ?, lastname = ?, fathersname =?, gender = ?, email = ?,address =? , phnno = ?, courses = ?" + "WHERE id =?");
ps.setInt(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getPwd());
ps.setString(4, user.getFname());
ps.setString(5, user.getLname());
ps.setString(6, user.getFathername());
ps.setString(7, user.getAddress());
ps.setString(8, user.getEmail());
ps.setString(9, user.getGender());
ps.setString(10, user.getPhno());
ps.setString(11, user.getCradio());
ps.execute();
}catch(Exception e){
e.printStackTrace();
}
`
【问题讨论】:
-
您的查询中有 12 个占位符,而您只提供了 11 个。算一算。
-
第11个占位符和
WEHRE之间应该有一个空格。应该是...courses = ? WHERE id =?" -
顺便说一句:你为什么要更新用户的
id?它不是独一无二的吗?而且您的查询将失败,除非您有 old id 值的句柄。如果这不是您的意图,请从您的查询中删除id=?,,重新编号参数编号,并为where id=?重新编号setXXX
标签: java mysql prepared-statement