Java - CachedRowSet


쿼리를 수행하고 결과를 ResultSet에 담을 수 있지만, connection 과 statement가 close되면 resultSet의 결과도 사라지게 됩니다.
따라서 일반적으로 resultSet을 리턴값으로 사용하기 힘든데요.
아래와 같이 resultSet을 cachedRowSet에 populate하게 되면, 응답 결과를 보존하면서 리턴값으로 사용할 수 있습니다.

/**
 * 쿼리를 실행하여 수행결과를 CachedRowSet에 담아서 리턴
 * @param query 수행할 쿼리
 * @return 정상이면 CachedRowSet, 실패하면 null
 */
public static CachedRowSet excuteQuery(String query) {
    // DB 연결
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    DbcpBasicDataSource db = DbcpBasicDataSource.getInstance();
    CachedRowSet crs = null;
    
    try
    {
        // 쿼리
        conn = db.getConnection();
        pstmt = conn.prepareStatement(query);
        rs = pstmt.executeQuery();
        crs = new CachedRowSetImpl();
        crs.populate(rs);
         
    } catch (Exception ex) {
        ex.printStackTrace();
        System.out.println(query);
        crs = null;
    } 
    finally {
        try { db.freeConnection(conn, pstmt, rs); } 
        catch (Exception ex) { System.out.println(ex.getMessage()); }
    }
    
    return crs;
}

 

광고

댓글 남기기