2016-04-06 4 views
2

Я пытаюсь решить проблему делать вставку в таблицу Postgresqlошибка: индекс столбца находится вне диапазона: 1, число столбцов: 0

Я смотрел на это подобный вопрос, но он не сделал решить мою проблему

ERROR : The column index is out of range: 1, number of columns: 0

здесь является частью кода получаю ошибку:

String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES($1,$2,$3,$4)"; 

PreparedStatement prepareStatement = connection.prepareStatement(query); 
prepareStatement.setInt(1, nbStar); 
prepareStatement.setString(2, body); 
prepareStatement.setString(3, author); 
prepareStatement.setInt(4, productId); 

boolean executed = prepareStatement.execute(); 

я пытался несколько раз, чтобы изменить номер индекса, но до сих пор го е та же ошибка

и вот схема таблицы:

table schema

может кто-нибудь дать мне совет?

спасибо.

+0

JDBC использует '' в качестве параметра заполнителя?. Подробнее см. В руководстве: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html –

ответ

5

В запросе sql вы хотите вставить значения для 5 полей (id, nbstar, body, author, product_id), но есть только 4 значения VALUES ($ 1, $ 2, $ 3, $ 4).


Update после вашего отредактированного вопроса, просто изменить свой запрос следующим образом:

VALUES($1,$2,$3,$4) 

в

VALUES(?,?,?,?) 
+0

Первое поле типа serial (auto increment id), мне нужно вставить только четыре следующих значения , это означает, что первый получает значение автоматически –

+0

Ответ правильный при изменении VALUES ($ 1, $ 2, $ 3, $ 4) для VALUES (?,?,?,?) –