cette exception est en fait déclenchée parce que vous fermez votre base de données deux fois, pas parce que vous ne l'avez pas fermée.
alors..
en vous close()
méthode, remplacez la ligne suivante dans votre code :
if (db != null) {
avec :
if (db != null && db.isOpen()) {