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

时间:2011-03-16 10:53:06

标签: android sqlite

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

更多人遇到了类似的问题,这在此处得到了解决:Cannot create Android SQLite database: PRAGMA error

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

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

1 个答案:

答案 0 :(得分:3)

最后,我找到了一段代码片段,解释了我的体验:

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()上。所以一切都由周围的代码管理。你(有点奇怪的自言自语......)只需关心在数据库上做你的数据相关的东西。创建,交易和关闭由围绕它的代码处理。