0

私は単純な選択カウントを行います:

woCount = db.select("SELECT count(foo) as bar from baz");
retval = woCount.rs.getInt("bar");

retval 行は Exhausted Resultset 例外をスローします。それはどのように可能でしょうか?つまり、select count は常に正確に 1 行を返すため、空の結果を取得することはできません。私は何が欠けていますか?

これがselectメソッドの実装です。参考までに、他の場所では問題なく動作します (SResultSet にはメソッドが定義されておらず、フィールドのみが定義されています)。

public static SResultSet select(String SQLQuery) throws DBException {
    Statement stmt = null;
    SResultSet crs = new SResultSet();
    try {
        Connection conn = getConnection();
        while (conn.isClosed()) {
            conn = getConnection();

        }
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        //stmt.setFetchSize(fetchSize);

        crs.rs = stmt.executeQuery(SQLQuery);
        crs.stmt = stmt;
    } catch (SQLException sqle) {
        logger.error("DB : Select(String SQLLQuery) : Error=" + sqle + " SQL=" + SQLQuery, sqle);
        throw new DBException("Application error while executing database query", sqle);
    }
    return crs;
}
4

2 に答える 2

5

rs.next()最初の行の前に偶数が必要です。フレッシュResultSetには、最初の行の前にカーソルが配置されています。何かを読み取る前に、それを進める必要があります。

于 2013-09-12T07:58:24.257 に答える