2016-01-29 34 views
-1

我爲我的應用程序使用DataProvider來處理CRUD操作。現在DataProvider正在使用嵌套的內部類SQLiteOpenHelper。 CRUD操作的所有定義的DataProvider本身內定義和SQLiteOpenHelper類負責建立數據庫,說abc.db和定義兩個表說表1表2。現在,當用戶登錄到應用程序時,數據庫被創建(顯然如果不存在),並且通過使用ContentResolver查詢和CursorLoader來加載到列表中來顯示用戶的數據。這部分我已經實現了。在Android中運行時創建數據庫

問題出現在多用戶場景中。假設用戶決定註銷並使用其他賬戶登錄或註冊新賬戶,因爲保留了前一個用戶的數據,以前的數據也會加載到ListView和/或從數據庫中獲取數據的其他視圖中。根據我的邏輯,這可以通過在同一設備上爲每個新用戶創建新的數據庫實例來阻止。但由於ContentProvider在Activity的onCreate()之前初始化數據庫,我發現這很難實現。任何想法如何實施?

+0

不能在數據庫的表中有一個名爲USER_ID的字段,並且當您加載數據時,請查看記錄的用戶的USER_ID並執行一個'select_columns from your_table where USER_ID = this_users_id'? –

+0

第一個用戶註銷時不能刪除數據庫嗎? http://stackoverflow.com/questions/5683840/how-to-delete-all-items-from-sqlite-in-android,如果你有用戶數據作爲共享首選項,你也可以清除。只是谷歌它:) – edwinj

+0

@GeorgeD很明顯,我可以,但這意味着檢查每個字段的每個查詢和不需要的列的額外開銷。我認爲這種解決方案是最後的選擇。 –

回答

0

由於我找不到其他替代方法,所以我相信維護user_id列是確保多用戶可用性而不受干擾的唯一方法。我已經實施了相同的步驟,並且使用user_id=?和當前登錄的用戶作爲user_id參數爲所有查詢添加了附加的WHERE子句。即使可能,在運行時創建數據庫的想法可能不是我的問題陳述所必需的。

相關問題