java.sql.SQLException:列索引错误无效

时间:2017-11-09 18:25:39

标签: java excel oracle

需要帮助..

我需要读取excel数据并将数据插入oracle db table。当我运行程序时,我收到错误无效的列索引。搜索文章,找不到解决方案。

代码段:

enter code here

3 个答案:

答案 0 :(得分:0)

由于调用或尝试从不存在的列读取数据而发生无效的列索引异常....简单来说,curser.getint()行中的列号错误

答案 1 :(得分:0)

听起来您正在使用数字索引从结果集中提取值,并且您尝试访问的索引不存在。在Oracle中运行查询并确认您获得了预期的结果。

您还可以添加try-with-resources块以获得额外的积分,并在catch中输出有问题的列/索引,仅用于调试目的。

答案 2 :(得分:0)

在没有任何代码段的情况下回复:

场景n.1(ResultSet)

在Java(SQL)中,当尝试在Invalid column index error

中获取变量时,您可以获得ResultSet

示例

ResultSet rs = ...;
try {
    if (rs != null) {
        rs.next();
        return rs.getInt(1);
    }
} catch (SQLException e) {
    // handle the exception
}

在这种情况下,您有一个结果,您正试图获得一列。 要获得第一列(请记住,数组从0开始),您需要编写rs.getX(0)(将X更改为您的值类型)

始终检查 ResultSet 是否 null (使用if (rs != null)

场景n.2(PreparedStatement)

在Java(SQL)中,当您在Invalid column index error

中分配变量时,您可以获得PreparedStatement

示例:

try {
    PreparedStatement ps = connection.prepareStatement("UPDATE users SET name = ? WHERE id = ?");
    ps.setInt(1, "Sam");
    ps.setString(2, "24");
    ps.executeUpdate();
} catch (SQLException e) {
    // handle the exception
}

在这种情况下,您有一个查询和替换? char)的参数,您可以使用索引(从1开始而不是0开始)来分配值

第一个?有索引1,第二个有索引2,依此类推...... 如果您的查询没有替换?,那么您将收到此Exception错误