1

クエリの実行後に接続を閉じようとしています。以前は、CachedRowSetImplインスタンスを作成するだけで、インスタンスがリソースを解放してくれました。ただし、Hadoop プロジェクトの Hive データベース ドライバーを使用しています。には対応していませんCachedRowSetImpl.execute()ResultSetオブジェクトをコピーして接続を閉じることができる他の方法があるかどうか疑問に思っていますか?

4

1 に答える 1

5

CachedRowSet既存の から を取り込むことができますResultSet:

public static RowSet executeQuery(String sql) throws Exception {
    Connection con = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    try{
        con = openConnection();
        ps = con.prepareStatement(sql);
        rs = ps.executeQuery();
        CachedRowSet rows = new CachedRowSetImpl();
        rows.populate(rs);
        return rows;
    }finally{
        rs.close();
        ps.close();
        con.close();            
    }       
}
于 2009-09-30T10:03:12.040 に答える