essa exceção realmente é gerada porque você fecha seu banco de dados duas vezes, não porque você não o fechou.
então..
em você
close() método, substitua a seguinte linha em seu código:if (db != null) {
com:
if (db != null && db.isOpen()) {
close() método, substitua a seguinte linha em seu código:if (db != null) {
if (db != null && db.isOpen()) {