Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

Наполнение Android-приложения данными.SQLite

#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(); } }

Комментариев нет:

Отправить комментарий