#android #sqlite
Уважаемые гуру, помогите определиться с выбором. База приложения должна содержит порядка 500 записей. Какой способ наполнения лучше выбрать? 1) сохранить структуру базы и ее данные в виде SQL скриптов, включить эти скрипты в приложение 2) передать базу данных в составе приложения в виде файла SQLite базы.
Ответы
Ответ 1
Лучше всего заранее подготовить БД в стороннем desktop приложении (например SLQite Browser) и кинуть его в assets и оттуда уже при первом запуске приложения скопировать через: context.getAssets().open(DATABASE_NAME); Иначе, создание БД из скриптов и вставка 500 записей при первом запуске приложения занятие не самое веселое.Ответ 2
Я решал так, Создал базу локально на PC с помощью SQLiteBrowser Сохранил файл базы (бинарный файл) в assets Потом при первом запуске скопировал базу на телефон public void initialise() { if (mInstance == null) { if (!checkDatabase()) { copyDataBase(); } mInstance = new AssetDatabaseOpenHelper(mContext, null, DATABASE_VERSION); mSqliteDb = mInstance.getWritableDatabase(); } } и как скопировал private static void copyDataBase() { try { // Open your local db as the input stream InputStream myInput = mContext.getAssets().open(DATABASE_NAME); // Path to the just created empty db String outFileName = getDatabasePath(); // if the path doesn't exist first, create it File f = new File(mContext.getApplicationInfo().dataDir + DB_PATH_SUFFIX); if (!f.exists()) f.mkdir(); // Open the empty db as the output stream OutputStream myOutput = new FileOutputStream(outFileName); // transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } // Close the streams myOutput.flush(); myOutput.close(); myInput.close(); } catch (Exception e) { e.printStackTrace(); } }
Комментариев нет:
Отправить комментарий