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

新手上路,请多包涵

我正在尝试解决插入 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();

我多次尝试更改索引号,但仍然出现相同的错误

这是表的架构:

表模式

谁能给我一个建议?

谢谢。

原文由 Nesan Mano 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 613
2 个回答

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


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

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

VALUES(?,?,?,?)

原文由 Tran Ho 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 aar0n 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题