sql异常:参数索引超出范围

时间:2013-02-01 17:45:15

标签: java sql jdbc sqlexception

我编写了以下方法来在数据库中执行update语句:

 public boolean updateEmployee(int id){
    try {
        String update="UPDATE employee set name='updatedName' and address='updatedaddress' where id=(?)";
        pst=connection.prepareStatement(update);
        pst.setInt(1, id);
        pst.executeUpdate();

    } catch (SQLException ex) {
        Logger.getLogger(DAO.class.getName()).log(Level.SEVERE, null, ex);
        return false;
    }
    return true;
 }

但发生以下异常:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

此异常也被抛出:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'UpdatedName'

这里有什么问题?另外,如何返回更新语句的结果(因为executeQuery不能用于DML语句)?

2 个答案:

答案 0 :(得分:5)

看起来像一个未公开的报价问题?

name='updatedname and address

答案 1 :(得分:2)

我可能错了,但也许声明应该是

UPDATE employee set name='updatedName' , address='updatedaddress' where id=(?)

而不是

UPDATE employee set name='updatedName' and address='updatedaddress' where id=(?)

and只能在where子句中使用。