Как хранить SQLite DB на SD-карте? [Дубликат]

Добавление строк (см. ниже) в файле: /etc/mysql/my.cnf

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Прекрасно работает для меня. Версия сервера: 5.7.18-0ubuntu0.16.04.1 - (Ubuntu)

20
задан Shiv 17 January 2013 в 09:09
поделиться

5 ответов

Я создал свою БД с

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

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

42
ответ дан koljaTM 25 August 2018 в 13:51
поделиться

Начиная с Android 6.0 (уровень API 23) пользователи предоставляют разрешения для приложений во время работы приложения, а не при установке приложения. Этот подход упрощает процесс установки приложения, поскольку пользователю не нужно предоставлять разрешения при установке или обновлении приложения.

Для получения разрешений во время выполнения вам нужно будет запросить пользователя. Вы можете сделать это следующим образом.

Первый запрос для разрешений.

String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
        requestPermissions(permissions, WRITE_REQUEST_CODE);

А затем вы можете проверить результаты в

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
       case WRITE_REQUEST_CODE:
         if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
           //Permission granted.
           //Continue with writing files...
         }
       else{
           //Permission denied.
         }
        break;
    }
}

. Здесь хороший источник обучения requesting-runtime-permissions-in-android-marshmallow /

0
ответ дан atiruz 25 August 2018 в 13:51
поделиться

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

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

}

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

2
ответ дан Raghav Sood 25 August 2018 в 13:51
поделиться
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" />**
1
ответ дан sarath chambayil 25 August 2018 в 13:51
поделиться

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

 DatabaseHelper(Context context) {
    super(context, Environment.getExternalStorageDirectory()
            + File.separator + "/DataBase/" + File.separator
            + DB_NAME, null, DB_VERSION);
}
0
ответ дан Vishal Vaishnav 25 August 2018 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: