Кто-нибудь может сказать мне, что не так с синтаксисом PrepareStatement - PullRequest
0 голосов
/ 12 октября 2011
public ResultSet readSubSet(int No, String name, String case) throws SQLException {
    preparedStatement = connect.prepareStatement("SELECT *  FROM target WHERE myName=? AND myCase=? LIMIT ?,10");
    preparedStatement.setString(8, name);
    preparedStatement.setString(6, case);
    preparedStatement.setInt(1, No);
    resultSet = preparedStatement.executeQuery();   
    return resultSet;
}

После пробега я получил: java.sql.SQLException: Parameter index out of range (8 > number of parameters, which is 2).

моя таблица определяет myName и myCase это TEXT, это нормально, я использую prepareStatement.setString

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Когда вы вызываете setString, вы передаете два аргумента, первый - это индекс параметра, который вы вводите, а второй - это значение, которое вы заполняете. В вашем случае вы бы хотели, чтобы prepareStatement.setString(1,name); заполнял 1-й параметр, prepareStatement.setString(2,case); заполнял 2-й параметр и т. Д.

0 голосов
/ 12 октября 2011

В вашем SQL у вас есть только 3 переменные, и вы устанавливаете переменную 8 в качестве имени в prepareStatement.setString (8, name) ...

Смотри @ http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html#supply_values_ps

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...