2016-12-27 5 views
1

Я знаю о копировании файла базы данных solutoin,Как сделать резервную копию Android базы данных - с WAL включен

How do I backup a database file to the SD card on Android?

Android backup/restore: how to backup an internal database?

Android backup/restore: how to backup an internal database?

на самом деле я поддерживал мои базы данных с помощью этого метод, и до недавнего времени он работал отлично. до тех пор, пока некоторые многопоточные вещи не заставили меня использовать enableWriteAheadLogging теперь у меня есть еще два файла рядом с файлом базы данных с .db-wal и .db-shm расширениями.

Копирование только файла базы данных .db не работает, так как в большинстве случаев файл не содержит последние коммиты базы данных (которые доступны для самого приложения throw), однако, когда я копирую три файла вместе, кажется, что они работают нормально (не выходят Конечно, хотя)

, как SQLITE люди рекомендуют, лучшая практика для резервного копирования SQLite базы данных является использование backup api, но может кто-то Guid меня о том, как я могу использовать этот API из внутри приложения, или даже использовать SQLite .dump (How do I dump the data of some SQLite3 tables?) метод изнутри приложения?

Какая из лучших практик заключается в резервном копировании базы данных sqlite из приложения Android?

1- Скопируйте все базы данных, связанные с файлами из песочницы

2- Использование SQLite резервного копирования Апи

3- Использование SQLite .dump

4- любого другой метод

ответ

1

SQLite backup API - единственный механизм, который работает правильно с одновременным доступом к записи из других потоков/процессов. Это, конечно, означает, что база данных Android Android не дает вам доступа к ней.

Если вы уверены, что активных подключений нет, вы можете просто скопировать все файлы. (Оставляя журнал или файлы WAL приведет к повреждению данных.) В случае WAL файл -shm не содержит постоянных данных и может быть опущен.