如何清理/删除greenDao数据库

Nat*_*tiv 13 sqlite android greendao

目前我这样做:

DaoMaster.dropAllTables(getDb(), true);
DaoMaster.createAllTables(getDb(), true);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将实体添加到数据库时,我收到崩溃日志,说这个表不存在

Edit1:我知道发生这种情况是因为数据库被锁定而且还没有创建表.所以我正在解决这个问题 - 如何知道这些表是否被锁定在grrenDao/Sqlite中?

dem*_*see 14

如何为每张桌子使用这样的东西?

daoSession.getSometableDao().deleteAll();
Run Code Online (Sandbox Code Playgroud)


jsa*_*arb 6

到现在为止,我不担心桌子是否锁定; 在我的情况下,我做以下工作:

首先,当App.onCreate执行时,我进行标准初始化.

    T.devOpenHelper= new DaoMaster.DevOpenHelper(context, "mydatabase", null);
    T.sqLiteDatabase= T.devOpenHelper.getWritableDatabase();
    T.daoMaster= new DaoMaster(T.sqLiteDatabase);
    T.daoSession= T.daoMaster.newSession();
    T.dao_myEntity= T.daoSession.getMyEntityDao();
Run Code Online (Sandbox Code Playgroud)

在未来的某个时刻,我会删除并重新创建所有表格,就像你一样:

    T.daoMaster.dropAllTables(T.sqLiteDatabase, true);
    T.daoMaster.createAllTables(T.sqLiteDatabase, true);
Run Code Online (Sandbox Code Playgroud)

但就我而言,我可以立即插入一个新实体:

    MyEntity e= new MyEntity();
    e.setId_ticket(1L);
    e.setDescription("wololo");
    long id= T.dao_myEntity.insert(e);
    Log.d(G.tag, "T.erase_all: id: " + id); // prints "T.erase_all: id: 1"
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.

  • 对不起,这里的 T 是什么? (2认同)