首页 > 解决方案 > 通过 java 执行 SQL 查询时出现“java.sql.SQLException: Invalid column index”错误

问题描述

谁能建议我在这里做错了什么,试图在控制台中打印 SQL 查询输出,但得到错误为“java.sql.SQLException: Invalid column index”。

import java.io.*;  
import java.sql.*;  

public class RetrieveFile {  
    public static void main(String args[]) throws Exception {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@123.43.23.43:8080/orcl", "Test", "*****");

            PreparedStatement ps = con.prepareStatement("select * from MSG where MSD='1234'");
            ResultSet rs = ps.executeQuery();
            // rs.next();//now on 1st row
            while (rs.next()) {

                int numberOfColumns = 0;
                for (int column = 1; column >= numberOfColumns; column++) {

                    if (column > 1)
                        System.out.print(", ");
                    System.out.print(rs.getString(column));
                }
            }

            con.close();

            // System.out.println("success" + (rs.getString(1)));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}  

我得到了部分响应,但最终得到以下错误。

错误:

null, 1234, 389, OUR, NOW, USD, 0, 0, FR1, wert, USD, 0, null, 0, 0, null, DR, null, null, 0, 0, null, null, null, null,空,空,空,空,空,0,2,2019-06-11 00:00:00.0,空,空,空,空,空,空,空,java.sql.SQLException:oracle 的列索引无效.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 在 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) 在 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208) 在oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:379) 在 RetrieveFile.main(RetrieveFile.java:20) 拿起 JAVA_TOOL_OPTIONS: -Duser.home=C:\Users\45060849

请在输出中包含 MSG 的表结构提前谢谢。

标签: javajdbc

解决方案


java.sql.SQLException: Invalid column index意味着具有您尝试访问的索引的列不存在。

变量numberOfColumns总是小于column变量,因此您试图从索引大于列数的列中获取值。


推荐阅读