0
我在greendao多筆交易中遇到了一些問題 例如我已經有兩張帶名簿和type_book的表。Android - Green Dao多筆交易
我已經有這樣的代碼:
我想,如果交易類型的書未能插入,交易書主回滾我的意思是取消插入數據的書的主人。如何做這樣的交易?
任何想法,參考和例子非常幫助謝謝。
我在greendao多筆交易中遇到了一些問題 例如我已經有兩張帶名簿和type_book的表。Android - Green Dao多筆交易
我已經有這樣的代碼:
我想,如果交易類型的書未能插入,交易書主回滾我的意思是取消插入數據的書的主人。如何做這樣的交易?
任何想法,參考和例子非常幫助謝謝。
我想你誤會了這個principe。嘗試創建數據庫,啓動事務,用daoMaster包裝數據庫,使用會話進行插入,然後設置事務成功。看代碼。
SQLiteDatabase db = openOrCreateDatabase("db", MODE_PRIVATE, null);
DaoMaster.createAllTables(db, true);
db.beginTransaction();
try {
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
Book book = new Book();
Book2 book2 = new Book2();
//insert on specific session
daoSession.getBookDao().insert(book);
//set some relation to inserted book
book2.setBook(book);
//if this fails, book and book2 won't be in db
//insert withou specific session
daoSession.insert(book2);
db.setTransactionSuccessful();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
db.endTransaction();
db.close();
}
爲什麼要重新創建數據庫?道生成器有文件DaoMaster和在那裏文件已經創建表,現在在片段我想要的代碼,但openOrCreateDatabase無法解析的片段。 – Name
它不會再次創建,它僅在不存在時創建表。只要確定你有正確的數據庫模式。 是的,你不能使用openOrCreateDatabase(),但你不應該。更好的做法是讓上下文(活動/應用程序)保存數據庫引用。 無論如何,請從片段中嘗試getActivity()。openOrCreateDatabase()。這應該工作,即使我不推薦它。 – l0v3
謝謝,我現在明白我想測試,但我很困惑如何將參考數據庫從活動發送到片段,以及您非常推薦和安全的方式。 – Name