Я думал, что документации будет достаточно, чтобы объяснить это. Проблема в том, что соединение должно быть закрыто, когда вы закончите, иначе соединение с базой данных SQL останется открытым. Если вы используете шаблон типа for (Account account : accountDao)
, то соединение будет только закрываться, если вы пройдете до конца через таблицу. Если вы используете break
или другой оператор (возврат, переход, исключение и т. Д.) Для выхода из цикла в середине, то ORMLite не будет автоматически закрывать соединение.
Если вы собираетесь выйти из цикла, то в документации указан правильный шаблон для использования. http://ormlite.com/docs/iterator
CloseableIterator<Account> iterator = accountDao.closeableIterator();
try {
while (iterator.hasNext()) {
Account account = iterator.next();
...
}
} finally {
iterator.close();
}
Вы также можете использовать «обернутый итерируемый», который позволяет вам делать закрытие в последнем цикле for.
CloseableWrappedIterable<Account> wrappedIterable =
accountDao.getWrappedIterable();
try {
for (Account account : wrappedIterable) {
...
}
} finally {
wrappedIterable.close();
}