原因:java.sql.SQLException:无效的列索引

死路

我试图通过使用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; 对SQL无效的ResultSet访问[从表1中删除,其中COL1 =吗?AND COL2 =?]; 嵌套异常是java.sql.SQLException:org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)上org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:235)处的无效列索引在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:660)在org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:909)在org.springframework.jdbc.core.JdbcTemplate.update (JdbcTemplate.java:970)在org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:980)

基里尔·西蒙诺夫(Kirill Simonov)

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

  • update(java.lang.String sql, java.lang.Object... args)

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

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

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

或者,如果您想提供类型,则如下所示:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过Java执行SQL查询时,获取错误为“ java.sql.SQLException:无效的列索引”

Java java.sql.SQLException:准备语句上的无效列索引

我收到java.sql.sqlexception:使用CallableStatement的无效列索引错误

PreparedStatementCallback;SQL[SQLStatememnt] 的无效结果集访问;嵌套异常是java.sql.SQLException:无效的列索引Spring Auth

java.sql.SQLException:在Spring Boot应用程序中使用简单的select查询时,无效的列索引异常

原因:java.sql.SQLException:找不到列“ id”

错误:java.sql.SqlException:无效的列类型

日期格式错误java.sql.SQLException:无效的列类型

如何从 MyBatis 获取 Map<String, Integer> ?原因:java.sql.SQLException:getInt() 的值无效 - 'NONE'

原因:java.sql.SQLException:无法添加外键约束

MongoDB原因:java.sql.SQLException:第1行的列'scenario_order'的数据太长

java.sql.SQLException:即使我对列进行计数,列索引也超出范围,> 2> 1

java.sql.SQLException:从 jdbc 执行包级别类型的过程时列类型无效

值java.sql.SQLException:无效的列名

Hibernate java.sql.SQLException:无效的列名

列索引超出范围,3> 2。嵌套的异常是java.sql.SQLException:

Spring安全性:java.sql.SQLException:列索引超出范围,3> 2

java.sql.SQLException:列索引超出范围,8> 6

SQL 状态 [99999];错误代码 [17004]; 列类型无效;嵌套异常是 java.sql.SQLException: Invalid column type

登录 sql 抛出 java.sql.SQLException:列索引超出范围,Spring Security 中的 3 > 2

java.sql.SQLException无效的对象名称

java.sql.SQLException:调用中的无效参数:getBytes()

java.sql.SQLException:GET请求中getLong()的值无效

Spring Boot + Flyway + AWS:原因:java.sql.SQLException:找不到合适的驱动程序

由以下原因引起:java.sql.SQLException:在SET子句中多次指定了列名。

原因:java.sql.SQLException:不支持JDBC4 Connection.isValid()方法

休眠:原因:java.sql.SQLException:表/视图“ USERS”已存在于架构中

原因:java.sql.SQLException:不支持的字符编码'utf8mb4'

java.sql.SQLException:在索引:1处缺少IN或OUT参数