OpenAMFでのjava.sql.ResultSetのFlashへの受け渡し

JavaでSQL、特にSELECT文を発行してResultSetをFlashに引渡し、DataSetのDataProviderにセットするとFlash上で活用できる。

それはいいいのだが、java.sql.ConnectionがCloseできない。CloseするとResultSetもクローズされてしまう。

解決策としてOpenAMFのASRecordSetクラスのpopulateメソッドを使う。このメソッドはjava.sql.ResultSetを引数として実行することでReslutSetがCloseされても問題なくASRecordSetオブジェクトがFlash側で処理される。

処理としてはこんな感じ(一部省略)

import org.openamf.recordset.ASRecordSet;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public ASRecordSet getAllData() throws IOException {

ASRecordSet recordSet = new ASRecordSet();
ResultSet rs = null;
Statement stmt = null;
Connection con = null;

String sql = "SELECT * FROM table";

try {
    con = _ds.getConnection();
    stmt = con.createStatement();
    rs = stmt.executeQuery(sql);
    recordSet.populate(rs);

    }
    catch(SQLException e) {
            throw new DataAccessException();
    }
    finally {
            close(rs);
            close(stmt);
            close(con);
    }

return recordSet;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.