Что происходит с объектом SQLiteDatabase, который передается методу onCreate ()? - PullRequest
2 голосов
/ 16 марта 2011

Несколько дней назад у меня возникла ошибка, вызванная вызовом db.close() в методе onCreate().

У некоторых людей были похожие проблемы, и это было решено здесь: Невозможно создать базу данных Android SQLite: ошибка PRAGMA

Теперь мне действительно интересно, ПОЧЕМУ это происходит. Я некоторое время искал в источниках Android, но не смог найти место, где вызывается метод onCreate(), или какую-либо документацию по этому поводу, чтобы узнать, что происходит с объектом SQLiteDatabase в окружающем коде вызова onCreate().

Кто-нибудь знает об этом больше? Или знает, где почитать, чтобы узнать больше об этом? : -)

1 Ответ

3 голосов
/ 17 марта 2011

Наконец я нашел фрагмент кода, который объясняет, что я испытывал:

int version = db.getVersion();
        if (version != mNewVersion) {
            db.beginTransaction();
            try {
                if (version == 0) {
                    onCreate(db);
                } else {
                    onUpgrade(db, version, mNewVersion);
                }
                db.setVersion(mNewVersion);
                db.setTransactionSuccessful();
            } finally {
                db.endTransaction();
            }
        }

        onOpen(db);
        success = true;
        return db;

это один фрагмент кода из источников Android. И из этого видно, что в onCreate () и onUpgrade () происходит много вещей. Так что все управляется окружающим кодом. Вы (как-то странно разговаривать со мной ....) должны заботиться только о том, чтобы делать ваши данные, связанные с DATA, на БД. Создание, транзакция и закрытие обрабатываются кодом, который его окружает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...