Как очистить / удалить базу данных greenDao

В настоящее время я делаю это так:

DaoMaster.dropAllTables(getDb(), true); DaoMaster.createAllTables(getDb(), true); 

Но тогда, когда я пытаюсь добавить сущность в базу данных, я получаю журнал сбоев, говорящий, что этой таблицы не существует

Edit1: Я знаю, что это происходит потому, что db заблокирован и таблицы еще не созданы. Поэтому я уменьшаю эту проблему до проблемы – как узнать, заблокированы ли таблицы в grrenDao / Sqlite?

Solutions Collecting From Web of "Как очистить / удалить базу данных greenDao"

До сих пор я не переживаю, если таблицы заблокированы или нет; В моем случае, я делаю следующее, и он работает:

Во-первых, когда 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(); 

В какой-то момент в будущем я бросаю и воссоздаю все столы, как и вы:

  T.daoMaster.dropAllTables(T.sqLiteDatabase, true); T.daoMaster.createAllTables(T.sqLiteDatabase, true); 

Но в моем случае я могу сразу вставить новый объект:

  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" 

Я надеюсь, что это помогает.

Как насчет использования чего-то подобного для каждой таблицы?

 daoSession.getSometableDao().deleteAll(); 
 public static void clearDatabase(Context context) { DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper( context.getApplicationContext(), Constants.SQL_DB_NAME, null); SQLiteDatabase db = devOpenHelper.getWritableDatabase(); devOpenHelper.onUpgrade(db,0,0); } 

Попробуй это:

 QueryBuilder<cart> qb = SQLConfig.cartDao.queryBuilder(); List<cart> mUpadateData = qb.where(cartDao.Properties.Product_sku.eq(skuApi)).list(); SQLConfig.cartDao.deleteInTx(mUpadateData);