Скопируйте ResultSet без использования CachedRowSetImpl.execute () - PullRequest
1 голос
/ 20 июля 2009

Я пытаюсь закрыть соединение после выполнения запроса. Раньше я просто создавал экземпляр CachedRowSetImpl, и он позаботится о том, чтобы освободить ресурсы для меня. Однако я использую драйвер базы данных Hive из проекта Hadoop. Он не поддерживает CachedRowSetImpl.execute(). Мне интересно, есть ли другой способ, позволяющий мне скопировать объект ResultSet и закрыть соединение?

1 Ответ

5 голосов
/ 30 сентября 2009

Вы можете заполнить 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();            
    }       
}
...