«Недопустимый индекс столбца» Ошибка SqlException при попытке вставить строку - PullRequest
0 голосов
/ 14 марта 2012

У меня проблема с настройкой PreparedStatement для вставки новой строки в мою таблицу.Я проверил запрос в своем редакторе SQL, и он успешно работал, но я не могу заставить этот PreparedStatement работать.

String sql = "INSERT INTO table game(gamedate, type, world) values (TIMESTAMP '?', ?, '?');"
runQuery(sql, date, type, world); 

...

protected runQuery(String sql, Object... params){
try {
  initiateConnection();
  PreparedStatement statement = connection.PrepareStatement(sql);

    int i = 1;
    for (Object p : params){
       statement.setObject(i, p);
       i++;
     }
   statement.executeUpdate();
} catch (Exception ex){

} finally {
 //close up things
}
}

Я добавил в некоторыхprintln (), чтобы проверить вывод, и все вроде бы нормально

sql: INSERT INTO game(gamedate, type, world) values(TIMESTAMP '?', ?, '?');
date: 2012-03-13 21:42:14
type: 1
world: test

Я получаю ошибку

java.sql.SQLException недопустимый индекс столбца

Я действительно очень озадачен здесь.Есть идеи, кто здесь виноват?

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Ваш оператор SQL имеет только один замещаемый заполнитель. Те, что в одинарных кавычках, являются буквальными вопросительными знаками.

1 голос
/ 14 марта 2012

Две догадки:

  • вам не нужны кавычки вокруг вопросительных знаков. Избавиться от тех
  • функция TIMESTAMP может быть проблематичной. Попробуйте преобразовать дату в метку времени, прежде чем устанавливать ее в подготовленном утверждении. (date.getTime() / 1000)
...