目前我正在做這樣的:如何清洗/刪除greenDao數據庫
DaoMaster.dropAllTables(getDb(), true);
DaoMaster.createAllTables(getDb(), true);
但後來,當我試圖實體添加到數據庫中,我越來越崩潰日誌說,這表不存在
編輯1: 我知道這是因爲數據庫被鎖定,表尚未創建。所以我減少了這個問題 - 如何知道這些表是否被鎖定在grrenDao/Sqlite中?
目前我正在做這樣的:如何清洗/刪除greenDao數據庫
DaoMaster.dropAllTables(getDb(), true);
DaoMaster.createAllTables(getDb(), true);
但後來,當我試圖實體添加到數據庫中,我越來越崩潰日誌說,這表不存在
編輯1: 我知道這是因爲數據庫被鎖定,表尚未創建。所以我減少了這個問題 - 如何知道這些表是否被鎖定在grrenDao/Sqlite中?
到現在爲止,我不擔心,如果表被鎖定或沒有;在我的情況下,我做了以下,它的工作原理:
首先,當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();
你可能會忘記,如果你在將來添加新表添加額外的電話.. – ODAXY 2017-11-27 08:00:08
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);
它只有清潔cartDao表。 – Nico 2017-02-16 03:29:14
現在可以這樣做:
for (AbstractDao abstractDao : mDaoSession.getAllDaos()){
abstractDao.deleteAll();
}
不好意思,但這裏T是什麼? – 2017-03-19 07:29:15