android - 传递给 onCreate() 方法的 SQLiteDatabase 对象会发生什么?

标签 android sqlite

几天前,我遇到了一个错误,该错误是由于在 onCreate() 方法中调用 db.close() 引起的。

还有更多人遇到了类似的问题,这里解决了:Cannot create Android SQLite database: PRAGMA error

我现在真的很感兴趣为什么会发生这种情况。我在 android 源代码中搜索了一段时间,但找不到调用 onCreate() 方法的位置或任何有关此的文档来了解 SQLiteDatabase 发生了什么> 调用 onCreate() 的周围代码中的对象。

有人知道更多吗?或者知道在哪里阅读以了解更多相关信息? :-)

最佳答案

最后我找到了一个代码 fragment ,它解释了我所经历的事情:

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 源代码中的一个代码 fragment 。从中你可以看到,onCreate() 和 onUpgrade() 周围发生了很多事情。所以一切都由周围的代码管理。你(对自己说话有点奇怪......)只需要关心在数据库上做与数据相关的事情。创建、事务和关闭由其周围的代码处理。

关于android - 传递给 onCreate() 方法的 SQLiteDatabase 对象会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5324241/

相关文章:

java - AsyncTask 中的嵌套/普通 for 循环

android - onActivityResult 返回 Intent 数据 null Firebase Auth

Android Twilio 视频通话,唤醒应用程序并将其置于前台

database - 使用 SQLite 触发器强制显式设置列值

python - 如何将几千列插入到sqlite3中?

java - packed switch 和 sparse switch dalvik操作码的区别

java - 为什么我的 Android 应用程序在启动新 Activity 时崩溃?

JavaScript 数据库

android - 为什么DbFlow不能保存未分配给变量的对象?

ruby-on-rails - 将 rails db 提取到 JSON 文件