java.sql.SQLException:参数索引超出范围-字符串中的空格

时间:2018-08-21 20:16:21

标签: java sql prepared-statement

我正在尝试通过ServletClass中的PreparedStatement更新数据库中的表。它引发java.sql.SQLException:参数索引超出范围(2>参数数量,即1)。我猜,问题是车串由更多的单词组成,所以它包含空格,但是我不知道该怎么解决。我试图在准备好的语句中删除第二个问号周围的两个撇号,但这无济于事。删除引号后,仍然存在以下错误:

  

java.sql.SQLException:无法使用executeQuery()发出数据操作语句

以下是代码摘录:

private void updateCarAvailability(int value, String car) throws Exception {
    Connection conn = null;
    PreparedStatement prst = null;
    try {
        conn = ds.getConnection();
        String sql = "update cars set available=? where name='?'";
        prst = conn.prepareStatement(sql);
        prst.setInt(1, value);
        prst.setString(2, car);
        prst.executeQuery(sql);
    }

2 个答案:

答案 0 :(得分:2)

解决方案是删除'上的where name='?',使其看起来像update cars set available=? where name=?,并且一次也应将executeQuery更改为execute您正在使用更新命令。

答案 1 :(得分:1)

删除?周围的单引号

String sql = "update cars set available=? where name=?";

不需要它们,因为实际值不是作为SQL语句的一部分而是作为绑定参数传递的。绑定参数不需要“ SQL格式”。