2015-08-13 3 views
2

У меня есть резервный модуль, который восстанавливает базу данных SQLite из резервной копии. Во-первых, он удаляет текущий файл базы данных, а затем копирует байты базы данных резервной копии в каталог базы данных. После восстановления базы данных я попрошу пользователя перезагрузить приложение, в том числе удалить его из памяти. Это работает правильно.Обновить ссылку базы данных SQLite после восстановления

Есть ли способ «обновить» ссылку на файл базы данных программно? Таким образом, пользователю не нужно закрывать приложение.

Моя база данных хранится в /data/data/com.mypackage.project/databases/mydatabase.db, а резервные копии находятся в SD-карте.

восстановить файл базы данных, как это:

public static boolean transferBytes(File from, File to) { 
     FileChannel inputChannel = getInputStream(from).getChannel(); 
     FileChannel outputChannel = getOutputStream(to).getChannel(); 
     return transfer(inputChannel, outputChannel); 
    } 

private static boolean transfer(FileChannel inputChannel, FileChannel outputChannel) { 
     try { 
      outputChannel.transferFrom(inputChannel, 0, inputChannel.size()); 
      inputChannel.close(); 
      outputChannel.close(); 
      return true; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return false; 
     } 
    } 

Где from находится файл резервной копии и to файл экземпляр с путем к базе данных, упомянутый выше.

ответ

1

Вы пытались создать новый экземпляр DBHelper после восстановления db?

Смежные вопросы