Подтвердить что ты не робот

Предварительная база данных Android

Я работаю над приложением Android, которому потребуется несколько записей (одна таблица с 1000-10000 строк), заполненная в этой базе данных приложений, прежде чем пользователь сможет использовать это приложение. Я просмотрел некоторые уроки, и я не уверен, как это сделать. Должен ли я просто проверять, существует ли база данных каждый раз, когда приложение запущено, а если нет, создайте его и вставьте тысячи требуемых записей? Или есть лучший способ справиться с этой проблемой? В идеале это может быть включено как часть процесса установки приложения, но я не уверен, что это возможно. Любая обратная связь будет с благодарностью.

4b9b3361

Ответ 2

способ, которым я собираюсь здесь, - отправить предварительно заполненную базу данных в папку с ресурсами. Вы можете вставить туда файлы и использовать их как есть. Остерегайтесь, однако, что существует ограничение по размеру 1 МБ, поэтому, возможно, вам придется разделить файлы или сжать их.

Сжатие очень удобно и хорошо поддерживается самим os.

надеюсь, что это помогло: -)

Ответ 3

Вот пример того, как создавать и заполнять базу данных, вы можете просто сделать это при установке приложения, это только создает одну запись, хотя это может быть неэффективно для того, что вы хотите сделать.

private static class settingsDatabaseHelper extends SQLiteOpenHelper{

    //SQL String for creating the table required
    private static final String CREATE_SETTINGS_TABLE
    = "CREATE TABLE tbl_settings(" +
            "_ID INTEGER PRIMARY KEY AUTOINCREMENT," +
            "VOIPUSERNAME TEXT," +
            "VOIPAUTHID TEXT," +
            "PASSWORD TEXT," +
            "VOIPDISPLAYNAME TEXT," +
            "SIPPROXYSERVER TEXT," +
            "SIPREGISTRAR TEXT," +
            "SIPREALM TEXT," +
            "EXPIRESTIME INTEGER);";    

    //constructor
    public settingsDatabaseHelper(Context context, String name,
            CursorFactory factory, int version) {
        super(context, name, factory, version);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_SETTINGS_TABLE);
         ContentValues initialValues = new ContentValues();
            initialValues.put("VOIPUSERNAME", "xxxxx");
            initialValues.put("VOIPAUTHID", "xxxxxxxxxx");
            initialValues.put("PASSWORD", "xxxxxx");
            initialValues.put("VOIPDISPLAYNAME", "xxxxxxxxx");
            initialValues.put("SIPPROXYSERVER", "xxxxxxxxxxxxx");
            initialValues.put("SIPREGISTRAR", "xxxxxxxxxxx");
            initialValues.put("SIPREALM", "xxxxxxxxxx");
            initialValues.put("EXPIRESTIME", xxxxxxxxxxx);
            Log.d("1.6", "gets to here");
            db.insert(SETTINGS_TABLE, null, initialValues);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to " +
                 newVersion + ", which will destroy all old data");

        db.execSQL("DROP TABLE IF EXISTS " + SETTINGS_TABLE);
        onCreate(db);

    } 

}

//end helper class
}

Ответ 4

JavaDoc из SQLiteOpenHelper:

Вспомогательный класс для управления базой данных создание и управление версиями. Вы создать подкласс, реализующий OnCreate (SQLiteDatabase), onUpgrade (SQLiteDatabase, int, int) и необязательно onOpen (SQLiteDatabase), и этот класс заботится об открытии база данных, если она существует, создавая ее если это не так, и обновить его как необходимо. Сделки используются для убедитесь, что база данных всегда находится в разумное состояние.

В качестве примера см. Класс NotePadProvider в NotePad образцовое приложение, в образцах/ каталог SDK.

Итак, если вы расширяете этот класс, у вас есть 3 метода, которые будут вызываться в некоторых случаях, и вы можете выбрать, что делать. Это лучшая практика:)