2014-01-19 29 views
-1

我明白你爲什麼需要將一個SQLiteDatabase傳遞給一個帶註釋的方法。然而,就我而言,我沒有看到處理這個問題的好方法。AndroidAnnotations SQLiteTransactions並傳遞SQLite數據庫

我喜歡使用管理器類在表格上抽象CRUD。這個類擁有SQLiteHelper實例,並實例化可讀/可寫數據庫。如果我使用了註解,這意味着我必須要麼實例化他們的經理類外,還是我要揭露這樣一種方法:

Device add(Device device) { 
    return add(sqliteHelper.getWritableDatabase(), device); 
} 

@Transactional 
Device add(SQLiteDatabase db, Device device) { 
    // ... 
    return device; 
} 

你們如何使用它,或者什麼是最好的做法?

+0

我只需要啓動一個sqlliteopenhelper,當我需要訪問數據庫時,您只需要上下文。 – danny117

回答

0

使用@Transactional看起來像syntatic糖,你不能使用它,並添加try/finally自己來實現相同的效果,而無需額外的方法。 http://code.google.com/p/androidannotations/wiki/SQLiteTransactions

我假設註釋工作,你需要公開這種方法?

+0

這個想法是不必重複交易所需的代碼。但是,在AndroidAnnotations的情況下,這意味着您將不得不提供SQLiteDatabase作爲參數。我找不到在哪裏實例化數據庫的好例子。理想情況下,我不想在UI類中執行此操作。 – ndsc

+0

您可能需要重新評估您的設計。你應該把這個SQL工作推到一個意向服務或其他東西。我專門使用ContentProvider來實現數據庫持久性。 –