org.postgresql.util.PSQLException:没有为参数11指定值

时间:2016-05-06 14:36:52

标签: java postgresql prepared-statement

我在语句中设置了10个带有问号的参数,并提供了10个相关值。在执行时,它抛出此错误“org.postgresql.util.PSQLException:没有为参数11指定值。”我在另一个表中遇到类似的问题,它也要求超出范围参数。我可以手动运行PostGres的查询没有任何问题。请提前感谢,请参阅下面的日志。

[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

2 个答案:

答案 0 :(得分:2)

   INSERT INTO dah53idm.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_USERID,
    LAST_UPDATE_DATE,
    SYSTEM_IND,ORG_ID) VALUES (?,?,?,?,?,?,?,?,date_trunc('second' , now()),?,?)

答案很明显。但无论如何我会指出它,你有11 question marks这意味着你应该添加11 values来执行查询,但在你的代码中你要添加only 10,因此异常{{ 1}}

答案 1 :(得分:0)

将所有参数正确分配给值

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());

    });