Java org.postgresql.util.PSQLException:未为参数11指定值
我在语句中设置了10个带问号的参数,并提供了10个相关值。在执行时,它抛出了这个错误“org.postgresql.util.psqleexception:没有为参数11指定值”。我在另一个表中遇到了类似的问题,其中它还请求一个超出范围的参数。我可以对PostGres手动运行查询,没有任何问题。请看下面的日志,提前谢谢Java org.postgresql.util.PSQLException:未为参数11指定值,java,postgresql,prepared-statement,Java,Postgresql,Prepared Statement,我在语句中设置了10个带问号的参数,并提供了10个相关值。在执行时,它抛出了这个错误“org.postgresql.util.psqleexception:没有为参数11指定值”。我在另一个表中遇到了类似的问题,其中它还请求一个超出范围的参数。我可以对PostGres手动运行查询,没有任何问题。请看下面的日志,提前谢谢 [DBOperations]:INSERT INTO product.SHIB_RP_MD_PROVIDER(RP_MD_PROVIDER_ID,MD_PROVIDER_TYPE
[DBOperations]:INSERT INTO product.SHIB_RP_MD_PROVIDER(RP_MD_PROVIDER_ID,MD_PROVIDER_TYPE_ID,MD_ID,SRC_ORG_ID,MD_NAME,MD_DESC,PARENT_RP_MD_PROVIDER_ID,LAST_UPDATE_USER,LAST_UPDATE_DATE,SYSTEM_IND,ORG_ID) VALUES (?,?,?,?,?,?,?,?,date_trunc('second' , now()),?,?)
[DBOperations]:No value specified for parameter 11. org.postgresql.util.PSQLException: No value specified for parameter 11.
[DBOperations] - Index 1 - Value 10042
[DBOperations] - Index 2 - Value 4
[DBOperations] - Index 3 - Value aa
[DBOperations] - Index 4 - Value 2
[DBOperations] - Index 5 - Value aa
[DBOperations] - Index 6 - Value null
[DBOperations] - Index 7 - Value 0
[DBOperations] - Index 8 - Value 1234
[DBOperations] - Index 9 - Value 0
[DBOperations] - Index 10 - Value 2
答案很明显。但我还是要指出,您有
11个问号
,这意味着您应该添加11个值
来执行查询,但在您的代码中,您只添加了10个
,因此异常“没有为11指定值”
将所有参数正确地分配给这些值
for (User user : users) {
System.out.println("Inserting Data for Userr name" + user.getName());
jdbcTemplate.update("insert into USERR(Id,Name,Dept,Salary)
values(?,?,?,?)",
preparedStatement -> {
preparedStatement.setLong(1,user.getId());
preparedStatement.setString(2, user.getName());
preparedStatement.setString(3, user.getDept());
preparedStatement.setLong(4, user.getSalary());
});
实际上有11个参数。你是不是不小心多加了一个?我只数了10个问号。我正在为其中一列传入date\u trunc('second',now())。因此,我假设我不需要为此打问号。用
?
替换该部分,稍后添加值。不要立即向9添加值向10和11添加值
for (User user : users) {
System.out.println("Inserting Data for Userr name" + user.getName());
jdbcTemplate.update("insert into USERR(Id,Name,Dept,Salary)
values(?,?,?,?)",
preparedStatement -> {
preparedStatement.setLong(1,user.getId());
preparedStatement.setString(2, user.getName());
preparedStatement.setString(3, user.getDept());
preparedStatement.setLong(4, user.getSalary());
});