Подтвердить что ты не робот

Как хранить базу данных sqlite непосредственно на SD-карте

Я хочу создать свою базу данных sqlite в sdcard вместо пути по умолчанию... Я хочу получить доступ ко всем моим данным из SD-карты Я использовал этот код:

            private static class OpenHelper extends SQLiteOpenHelper {

    OpenHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        SQLiteDatabase.openOrCreateDatabase("/sdcard/"+DATABASE_NAME,null);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE "
                + TABLE_NAME
                + " (id INTEGER PRIMARY KEY, name TEXT, number TEXT, skypeId TEXT, address TEXT, image BLOB)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }
}

Проблема:

Когда я вижу файл базы данных по умолчанию, я могу видеть все данные и таблицы, но когда я вижу файл базы данных, созданный на SD-карте, он не показывает никаких данных, но только показывает файл базы данных

конструктор IN он создает файл только в sdcard, но по умолчанию он делает все хорошо..... Как сохранить все Sqlitedata на SD-карте для дальнейшего доступа?

4b9b3361

Ответ 1

Я создал свою БД с помощью

    public DatabaseHelper(final Context context) {
    super(context, Environment.getExternalStorageDirectory()
            + File.separator + FILE_DIR
            + File.separator + DATABASE_NAME, null, DATABASE_VERSION);
}

и никаких проблем не было. Я предполагаю, что ваш вызов super() должен также ссылаться на SD-карту.

Ответ 2

Вы предоставляете неполное имя в своем вызове super(). Попробуйте использовать:

OpenHelper(Context context) {
    super(context, "/sdcard/"+DATABASE_NAME, null, DATABASE_VERSION);
    SQLiteDatabase.openOrCreateDatabase("/sdcard/"+DATABASE_NAME,null);

}

Кроме этого, вы всегда должны использовать Environment.getExternalStoreDirectory(), чтобы получить путь к внешнему хранилищу, и вы должны также проверить состояние внешнего хранилища, прежде чем пытаться его использовать.

Ответ 3

public DataBaseHelper(final Context context) {

    super(context, Environment.getExternalStorageDirectory()
    + File.separator+ MYDATABASE_NAME, null, MYDATABASE_VERSION);
}

**Also Add permission in android Manifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />**

Ответ 4

Просто укажите путь в конструкторе;

 DatabaseHelper(Context context) {
    super(context, Environment.getExternalStorageDirectory()
            + File.separator + "/DataBase/" + File.separator
            + DB_NAME, null, DB_VERSION);
}