0

下面的代码片段

    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

这是如何引起的,我该如何解决?

4

2 回答 2

0

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

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

于 2013-06-13T17:22:36.543 回答
0

rs.getInt(0)

JDBC 列索引从1. 因此,您应该按如下方式检索数据:

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

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

于 2012-09-27T18:07:48.890 回答