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

2022-09-03 13:19:54

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

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

错误:列索引超出范围:1,列数: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();

我尝试了几次更改索引号,但仍然有相同的错误

下面是表的架构:

表架构

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

谢谢。


答案 1

在 sql 查询中,您希望插入 5 个字段(id、nbstar、正文、作者product_id)的值,但只有 4 个值 VALUES($1,$2,$3,$4)。


按照您编辑后的问题进行更新,只需按如下方式修改您的查询:

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

VALUES(?,?,?,?)

答案 2

我的问题是问号周围有单引号,我从直接sql复制粘贴查询,所以我只是用?替换了字符串。例如,我不得不将其更改为Select * from datatable where id = '?'Select * from datatable where id = ?