code: @Override
  	public void close() {
  		lockDb.lock();
  		try {
  			if (openCounter.decrementAndGet() <= 0) {
  
  				if (!this.options.inMemory) {
  					// Closing database
  					if (database != null) {
  						clearCompiledStatements();
  						database.close();
  					}
  					database = null;
  				}
  				if (logEnabled)
  					Logger.info("database CLOSED (%s) (connections: %s)", status.get(), openCounter.intValue());
  			} else {
  				if (logEnabled)
  					Logger.info("database RELEASED (%s) (connections: %s)", status.get(), openCounter.intValue());
  			}
  		} finally {
  			switch (status.get()) {
  			case READ_AND_WRITE_OPENED:
  				if (database == null)
  					status.set(TypeStatus.CLOSED);
  				lockReadWriteAccess.unlock();
  				lockDb.unlock();
  				break;
  			case READ_ONLY_OPENED:
  				if (database == null)
  					status.set(TypeStatus.CLOSED);
  				lockReadAccess.unlock();
  				lockDb.unlock();
  				break;
  			case CLOSED:
  				// do nothing
  				lockDb.unlock();
  				break;
  			default:
  				lockDb.unlock();
  				throw (new KriptonRuntimeException("Inconsistent status"));
  			}
  
  		}
  
  	}
docs: /*
  (non-Javadoc)
  
  @see android.database.sqlite.SQLiteOpenHelper#close()