0
我有一個應用程序在Android中使用SQLite來保存數據。當事務方法在sqlite中使用事務調用另一個方法時會發生什麼?
如果您調用一個方法從另一個啓動另一個事務的方法啓動一個事務,例如這個例子,它是正確的嗎?這兩筆交易發生了什麼?
@Override
public void saveSurvApplied(MSurvey surv, MSApplied sa) {
try {
db.beginTransaction();
SurveyManager surveyManager = ManagerFactory.getSurveyManager(ctx);
surveyManager.saveSurveyState(surv); // it begins a transaction
saDao.save(sa);
db.setTransactionSuccessful();
} catch (SQLException ex) {
Log.e(tag, "Error insertando las encuestas aplicadas", ex);
} finally {
db.endTransaction();
}
}
...
SurveyManagerImpl.java
@Override
public void saveSurveyState(MSurvey survey) {
try {
db.beginTransaction();
for (MNode node : survey.getNodes()) {
nodeDao.update(node);
MItem[] items = node.getItems();
if (items != null) {
for (MItem item : items) {
itemDao.update(item);
}
}
}
surveyDao.update(survey);
db.setTransactionSuccessful();
} catch (SQLException ex) {
Log.e(tag, "Error actualizando la encuesta", ex);
} finally {
db.endTransaction();
}
}
我可以提供一些參考學習,當你的SQLite中調用嵌套事務會發生什麼? 謝謝。