База данных потеряна в проекте - не в активах - PullRequest
0 голосов
/ 14 ноября 2018

Обычно для внесения изменений в мою базу данных я выполнял следующие шаги:

  • Отредактированная база данных в SQLite
  • Удалить базу данных в моей папке активов
  • Скопируйте и снова вставьте базу данных в папку активов
  • Удалить приложение из моего телефона через настройки
  • Перестройка / установка приложения

Это работало для меня заранее много раз. Нет, у меня проблема в том, что мой проект больше не имеет доступа к этой базе данных.

Я понял это, удалив базу данных из папки с активами и переустановив приложение. Приложение по-прежнему работает, поэтому оно не обращается к базе данных из папки с активами, которую я использовал заранее, насколько мне известно.

Я использую следующий путь для доступа к нему:

DB_Path = mContext.getDatabasePath(DB_Name).
Log.e("DB_path", DB_Path);

Что дает

.com.example.chris.projectartifact E/DB_path:/data/user/0/com.example.chris.projectartifact/databases/myDB.db.

Относительно комментария:

Я использую следующий метод для копирования моей базы данных. Это из учебника, и он работал очень долго. Из моего понимания, хотя FileOutputStream(DB_Path) копирует его в именованный путь.

public void copyDataBase(){
        try {
            InputStream myInput = mContext.getAssets().open(DB_Name);
            OutputStream myOutput = new FileOutputStream(DB_Path);

            byte[] buffer = new byte[1024];
            int length;
            while ((length=myInput.read(buffer))>0){
                myOutput.write(buffer,0,length);
            }
            myOutput.flush();
            myOutput.close();
            myInput.close();
        } catch (IOException e){
            Log.e("Error:","in CopyDatabase, where are in catch..");
            e.printStackTrace();
        }
    }

Вопросы:

  • Где я могу найти свою базу данных в моей структуре?
  • Как мне его обновить?
  • Новый вопрос: Как удалить скопированную базу данных и обновить ее из папки активов?

1 Ответ

0 голосов
/ 14 ноября 2018

Если ваша база данных находится в папке вашего ресурса, она вообще не находится в файловой системе - она ​​находится в ваших ресурсах - это часть файла APK (и, следовательно, только для чтения). Если вам нужно, чтобы он был прочитан и записан, вам сначала нужно скопировать его в файловую систему, а затем вы можете поместить его в нужное место (хотя путь к базе данных является традиционным, он не применяется).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...