Java 错误:列索引超出范围:1,列数:0
我试图解决向Postgresql表中插入数据的问题 我看了这个类似的问题,但它并没有解决我的问题 以下是获取错误的代码部分:Java 错误:列索引超出范围:1,列数:0,java,postgresql,insert,Java,Postgresql,Insert,我试图解决向Postgresql表中插入数据的问题 我看了这个类似的问题,但它并没有解决我的问题 以下是获取错误的代码部分: String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES($1,$2,$3,$4)"; PreparedStatement prepareStatement = connection.prepareStatement(query); prepareStatement.se
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();
我尝试了几次更改索引号,但仍然出现相同的错误
下面是该表的模式:
有人能给我一个建议吗
谢谢。在sql查询中,您希望插入5个字段(id、nbstar、body、author、product\u id)的值,但只有4个值($1、$2、$3、$4)
更新以下已编辑的问题,只需按如下方式修改查询:
VALUES($1,$2,$3,$4)
到
对我来说,问题是在查询字符串的末尾有一个分号。比如:
String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES(?,?,?,?);";
注意代码>附加到查询字符串的末尾。解决方法是,移除它:
String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES(?,?,?,?)";
第一个字段是serial(auto increment id)类型,我只需要插入以下四个值,这意味着第一个字段自动接收值将值($1、$2、$3、$4)更改为值(?,,,?)时,答案是好的。JDBC使用?
作为参数占位符。有关详细信息,请参阅本教程:如果?
的引用方式类似于“?”,例如,其中ad_date>=”?“
不正确,也会导致相同的问题
String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES(?,?,?,?)";