2014-05-17 91 views
1

所以我已經嘗試了幾個例子,但迄今爲止,我一直無法找到任何可以提供任何知識的源代碼,無論我是否可以保存我的sqlite數據庫在例如在「/系統」文件夾中的設備的內部存儲器中的任何其他文件夾,我知道,它可以通過簡單地做以下保存在Android內存中的SQLite數據庫

public class DatabaseHandler extends SQLiteOpenHelper { 

    // All Static variables 
    // Database Version 
    private static final int DATABASE_VERSION = 1; 

    // Database Name 
    private static final String DATABASE_NAME = "contactsManager"; 

    // Contacts table name 
    private static final String TABLE_CONTACTS = "contacts"; 

    // Contacts Table Columns names 
    private static final String KEY_ID = "id"; 
    private static final String KEY_NAME = "name"; 
    private static final String KEY_PH_NO = "phone_number"; 

    public DatabaseHandler(Context context) { 
     super(context, "sd card path here "+DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    // Creating Tables 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," 
       + KEY_PH_NO + " TEXT" + ")"; 
     db.execSQL(CREATE_CONTACTS_TABLE); 
    } 

它保存在SD卡,但有什麼辦法,我可以將數據庫保存在內部存儲器中,就像在「/ system」文件夾中一樣?

+0

如果您正在爲應用程序分配根權限,則可以訪問內部內存,該權限僅適用於有根據的電話。 :) –

+0

@SaqibVohra,我的應用程序是一個系統應用程序,所以我們假設它具有讀取和寫入權限,所以在這種情況下,我可以簡單地在構造函數中傳遞內部存儲器的路徑,就像上面的示例一樣,或者是否存在不同的程序? –

+0

yup,正好:)如果你有root權限,你可以像訪問文件夾一樣/ system/app 這裏是一個類似的線程,你會發現它很有用。 :) –

回答

2

但有沒有什麼辦法可以將數據庫保存在內存中,就像在「/ system」文件夾中一樣?

不,因爲您沒有對該目錄的讀取或寫入權限。

+0

我們暫時假設我正在開發一個系統應用程序,該應用程序與設備捆綁在一起,請原諒我的noobishness,但在這種情況下,這可能嗎?如果是的話,我該怎麼做? P.S.你和你的書的粉絲。 –

+0

@AalokSharma:預安裝的應用程序不一定具有對該目錄的讀取或寫入權限。如果是這樣,那麼你可以讀寫數據庫。並感謝您的客氣話! – CommonsWare

相關問題