java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]无效的描述符索引

时间:2012-09-27 17:49:48

标签: java jdbc

以下代码段

    String query = " SELECT * FROM accessdb.user;";
    try
    {
        ResultSet rs = statement.executeQuery(query);
        rs.first();
        String s = "";
        do
        {

            s = s + rs.getInt(0) + "\t\t" + rs.getString(1) + "\t\t" 
                + rs.getString(2) + "\n";
            rs.next();
        }
        while (!rs.isLast());
        System.out.println(s);
    }
    catch (Exception ex)
    {
        System.out.println("\nError for firing query");
    }

产生以下异常

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid descriptor index

这是如何引起的?如何解决?

2 个答案:

答案 0 :(得分:0)

  

rs.getInt(0)

JDBC列索引从1开始。所以你应该按如下方式检索数据:

s = s + rs.getInt(1) + "\t\t" + rs.getString(2) + "\t\t" + rs.getString(3) + "\n";

使用rs.get*()中的列名要好得多,并且通常可以保护代码免受返回列顺序的任何更改。

答案 1 :(得分:0)

  

使用rs.get*()中的列名要好得多,并且通常可以保护代码免受返回列顺序的任何更改。

我发现没有双引号的列名会引发相同的错误。