热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

不调用SQLiteOpenHelperonCreate方法

如何解决《不调用SQLiteOpenHelperonCreate方法》经验,为你挑选了1个好方法。

即使在卸载应用程序然后重新安装它之后,也不会调用onCreate方法.

Database.java:

public class Database extends SQLiteOpenHelper {
    public static SQLiteDatabase db;
    public Database(Context context) {
        super(context,"db", null, 1);
        Log.i("DB", "dbManager");
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.i("DB", "dbOnCreate");
        String s = "CREATE TABLE test(id INTEGER);";
        db.execSQL(s);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        Log.i("DB", "dbOnUpgrade");
    }
}

我这叫:

Database db = new Database(this);

输出:

07-17 12:42:03.053 16448-16448/com.package.app I/DB:dbManager

这个问题是什么以及如何解决?



1> Willi Mentze..:
public class Database extends SQLiteOpenHelper {
    public static SQLiteDatabase db;
    public Database(Context context) {
        super(context,"db", null, 1);
        getReadableDatabase(); // <-- add this, which triggers onCreate/onUpdate
        Log.i("DB", "dbManager");
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.i("DB", "dbOnCreate");
        // ...
    }
    // ...
}

说明: 仅在访问db进行写入或读取时才会触发更新.既然你没有尝试过,onCreate就永远不会被召唤.

通常,您只需在某处调用Database类的方法(例如查询实体),这就是调用onCreate/(或onUpdate)的时刻.

既然,你没有这样的方法(现在),只需在Database构造函数中调用它.

要么:

或者,也许更干净的是getReadableDatabase()在创建Database对象后立即调用:

Database db = new Database(this);
db.getReadableDatabase();


推荐阅读
author-avatar
追麾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有