简体   繁体   中英

java.sql.SQLException: Parameter index out of range - whitespaces in String

I'm trying to update a table in a database through PreparedStatement in ServletClass. It raises java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1). I guess, the problem is car string consists of more words, so it contains whitespaces, but I don't know how exactly solve it. I tried to remove two apostrophe marks surrounding the second question mark in the prepared statement but it didn't help. After removing quotes, there is still the following error:

java.sql.SQLException: Can not issue data manipulation statements with executeQuery()

Here is an extract of code:

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);
    }

The solution is to remove the ' on where name='?' , so it should look like update cars set available=? where name=? update cars set available=? where name=? , and also you should change executeQuery for execute , once you're using an update command.

Remove the single quotes around the ?

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

They are not needed as the actual value is not passed as part of the SQL statement but as a bind parameter. And bind parameters don't need "SQL formatting".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM