gpt4 book ai didi

java - Caused by : java. sql.SQLException: 列索引无效

转载 作者:行者123 更新时间:2023-11-29 08:30:07 24 4
gpt4 key购买 nike

我试图通过使用 Spring jdbctemplate 传递 2 列作为过滤器来删除一条记录。但是我不知道下面的代码有什么问题。我在下面提到了异常。我已经检查了 dedug,requestId 和 qtId 值即将到来。

public void deleteTxn(String sql, int requestId, int qtId) {
try {
jdbcTemplate.update(sql,
new Object[]{
requestId,
qtId
});
} catch(Exception e) {
//
}
}
}

String sql = "DELETE FROM TABLE1 WHERE COL1 = ? AND COL2 = ?";

异常:

org.springframework.jdbc.InvalidResultSetAccessException: PreparedStatementCallback; invalid ResultSet access for SQL [DELETE FROM TABLE1 WHERE COL1 = ? AND COL2 = ?]; nested exception is java.sql.SQLException: Invalid column index at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:235) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:660) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:909) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:970) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:980)

最佳答案

jdbcTemplate.update 有两个相似的方法签名:

  • 更新(java.lang.String sql, java.lang.Object... args)

  • 更新(java.lang.String sql, java.lang.Object[] args, int[] argTypes)

在您的情况下,选择第一个重载方法是因为您没有提供 int[] argTypes,因此您的更新语句只有一个参数,即 new Object[]{ requestId, qtId}.

解决方案很简单:只需编写jdbcTemplate.update(sql, requestId, qtId);

或者,如果你想提供类型,像这样:

jdbcTemplate.update(sql, new Object[]{requestId, qtId}, 
new int[]{Types.BIGINT, Types.BIGINT});

关于java - Caused by : java. sql.SQLException: 列索引无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49124634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com