копировать базу данных из базы данных в папку баз данных

В основном случае у меня есть этот метод, который копирует файлы из assets в папку databases :

 try{ // CHECK IS EXISTS OR NOT SQLiteDatabase dbe = SQLiteDatabase.openDatabase("/data/data/com.henanet.dalel/databases/mydb.sqlite",null, 0); dbe.close(); // COPY IF NOT EXISTS AssetManager am = getApplicationContext().getAssets(); OutputStream os = new FileOutputStream("/data/data/com.henanet.dalel/databases/mydb.sqlite"); byte[] b = new byte[100]; int r; InputStream is = am.open("mydb.sqlite"); while ((r = is.read(b)) != -1) { os.write(b, 0, r); } is.close(); os.close(); } catch(Exception e) { } 

Но как только пользователь устанавливает приложение, он получает эту ошибку в LogCat:

 09-14 22:57:25.694: I/Database(19903): sqlite returned: error code = 14, msg = cannot open file at source line 25467 09-14 22:57:25.694: E/Database(19903): sqlite3_open_v2("/data/data/com.henanet.dalel/databases/mydb.sqlite", &handle, 2, NULL) failed 

Мой метод

Получите свой путь к базе данных, используя следующие

 ContextWrapper cw =new ContextWrapper(getApplicationContext()); DB_PATH =cw.getFilesDir().getAbsolutePath()+ "/databases/"; //edited to databases 

Тогда вы можете пойти так

 private void copyDataBase() { Log.i("Database", "New database is being copied to device!"); byte[] buffer = new byte[1024]; OutputStream myOutput = null; int length; // Open your local db as the input stream InputStream myInput = null; try { myInput =myContext.getAssets().open(DB_NAME); // transfer bytes from the inputfile to the // outputfile myOutput =new FileOutputStream(DB_PATH+ DB_NAME); while((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } myOutput.close(); myOutput.flush(); myInput.close(); Log.i("Database", "New database has been copied to device!"); } catch(IOException e) { e.printStackTrace(); } } 
  • Как скопировать список?
  • Interesting Posts

    Как расширить модуль python? Добавление новых функций в пакет `python-twitter`

    Переместить макеты, когда отображается мягкая клавиатура?

    Создать точку доступа Wi-Fi с точкой доступа в Интернет

    Арифметическое исключение: «Неограничивающее десятичное расширение; нет точного представимого десятичного результата “

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

    Различные цвета фона для нескольких типов файлов в vim

    Использование ключевого слова «this» в C ++

    Что такое оператор Java?: И что он делает?

    Показать диалоговое окно проверки подлинности в C # для Windows Vista / 7

    Справочник Excel – подключение списка к базе данных

    Cloning Fresh Windows 7 -fsed HDD для Linux Server, потому что не имеет внешнего жесткого диска или дисков для резервного копирования

    Do / can абстрактные classы заменяют интерфейсы?

    Расчет скорости соединения / загрузки

    Как сделать .NET COM-объект квартирной резьбой?

    didFinishPickingMediaWithInfo return nil фото

    Давайте будем гением компьютера.