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()) {