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

rs.getInt(0)

JDBC 列のインデックスは から始まります1。したがって、次のようにデータを取得する必要があります。

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

で列名を使用するrs.get*()方がはるかに優れており、一般に、返される列の順序が変更されないようにコードを保護します。

于 2012-09-27T18:07:48.890 に答える