Приложение Android не может загрузить базу данных, когда база данных копируется сразу после установки приложения - PullRequest
0 голосов
/ 10 июня 2011

В целях тестирования я хочу установить свое приложение, а затем скопировать базу данных, но я получаю сообщение об ошибке при открытии базы данных:

06-09 20:20:54.414: INFO/Database(8854): sqlite returned: error code = 14, msg = cannot open file at source line 25467
06-09 20:20:54.414: ERROR/Database(8854): sqlite3_open_v2("/data/data/com.mydomain.myproductname/databases/myproductname.db", &handle, 6, NULL) failed

Даже если я удалю базу данных в этот момент ипопробуйте запустить приложение, оно все еще не работает.Единственный способ устранить ошибку - переустановить приложение.Любые предложения для того, что я должен проверить?

(Этот вопрос похож на Android SQLiteOpenHelper не может открыть файл базы данных , но решение, которое задал Аскер, заключалось в удалении приложения, но я не хочусделайте это. Мой провайдер очень похож на пример с блокнотом, за исключением того, что я также делаю некоторые INSERT после создания таблиц, хотя это не проблема.)

1 Ответ

2 голосов
/ 14 июня 2011

Как вы копируете базу данных?Является ли база данных частью ваших активов?Я бы решил это, имея файл sql в ваших ресурсах.Файл sql будет содержать все команды sql, необходимые для создания базы данных.Затем используйте AssetManager , чтобы открыть поток ввода из файла sql и объявить InputStreamReader для InputStream и BufferedReader для InputStreamReader следующим образом:

BufferedReader reader = new BufferedReader(new InputStreamReader(manager.open("filename", AssetManager.ACCESS_BUFFER)))

Оттуда используйте BufferedReader дляполучить команды SQL и запустить их в вашей базе данных

db.rawQuery(reader.readLine(), null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...