错误:列索引超出范围:1,列数:0

时间:2016-04-06 00:18:00

标签: java postgresql insert

我正在尝试解决插入Postgresql表的问题

我看了这个类似的问题,但它没有解决我的问题

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

任何人都可以给我一个建议吗?

感谢。

2 个答案:

答案 0 :(得分:9)

在sql查询中,您要插入5个字段(id,nbstar,body,author,product_id)的值,但只有4个值VALUES($ 1,$ 2,$ 3,$ 4)。

根据您编辑过的问题进行更新,只需修改您的查询,如下所示:

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

VALUES(?,?,?,?)

答案 1 :(得分:0)

对我来说,问题在于查询字符串的末尾有分号。像这样:

String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES(?,?,?,?);";

请注意,在查询字符串末尾附加了;。修复方法是删除它:

String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES(?,?,?,?)";