glass 0 Опубликовано 3 ноября, 2015 (изменено) try(Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement("UPDATE characters SET online=?, lastAccess=? WHERE obj_id=?"); statement.setInt(1, isOnline()); statement.setLong(2, System.currentTimeMillis()); statement.setInt(3, getObjectId()); statement.execute(); statement.close(); } catch (final Exception e) { if (Config.ENABLE_ALL_EXCEPTIONS) e.printStackTrace(); _log.warn("could not set char online status:" + e); } пример 2 Connection con = null; PreparedStatement statement = null; try { con = L2DatabaseFactory.getInstance().getConnection(); statement = con.prepareStatement("UPDATE characters SET LastHWID=? WHERE obj_id=?"); statement.setString(1, HWID); statement.setInt(2, getObjectId()); statement.execute(); } catch(final Exception e) { _log.warning("could not store characters HWID:" + e); } finally { DatabaseUtils.closeDatabaseCS(con, statement); } Вопрос такой, в первом try - catch только но в трае присваивание. А во втором try - catch - finally. Так вот... В первом случае конект закроется автоматически когда попытка будет успешной? или надо всё равно finally писать? Со вторым понятно, finally выполнится когда попытка будет успешна. Изменено 3 ноября, 2015 пользователем glass Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Silentium 592 Опубликовано 3 ноября, 2015 Загуглите try-with-resources. В первом примере не нужно закрывать коннект, как и не нужен блок finally. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
glass 0 Опубликовано 3 ноября, 2015 т.е в обоих примерах конект закрывается как нужно. Понял. Спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Silentium 592 Опубликовано 3 ноября, 2015 т.е в обоих примерах конект закрывается как нужно. Понял. Спасибо. Именно. Но первый метод применим для Java 7 и выше. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты