SQLite
 sql >> база данни >  >> RDS >> SQLite

инициализирайте sqlite база данни за android

Изглежда, че другите отговори не отговарят как всъщност да се попълва базата данни с първоначални стойности, така че ще споделя как го направих тук.

По принцип вие запазвате колоните на вашата база данни като низови масиви в xml файл. Ще покажа само един масив, но можете да направите повече за други колони. (Трябва обаче да внимавате с множество колони, за да не объркате реда на масива и по този начин да объркате редовете на вашата база данни.)

Направете файл /res/values/arrays.xml и добавете масива към него.

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="my_array">

            <item>string 1</item>
            <item>string 2</item>
            <item>string 3</item>
            <item>string 4</item>
            <item>string 5</item>

    </string-array>

</resources>

След това можете да получите този масив, когато създадете базата данни във вашия помощен клас. Ето какво направих:

private static class DatabaseHelper extends SQLiteOpenHelper {

    private final Context fContext;

    // constructor
    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        fContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_NAME + " ("
                + FIRST_COLUMN + " INTEGER PRIMARY KEY,"
                + SECOND_COLUMN + " TEXT NOT NULL,"
                + THIRD_COLUMN + " INTEGER,"
                + FOURTH_COLUMN + " TEXT NOT NULL"
                + ");");

        // Initialize the db with values from my_array.xml
        final int DEFAULT_THIRD_COLUMN = 1;
        final String DEFAULT_FOURTH_COLUMN = "";
        ContentValues values = new ContentValues();
        Resources res = fContext.getResources();
        String[] myArray = res.getStringArray(R.array.my_array);
        for (String item : myArray){
            values.put(SECOND_COLUMN, item);
            values.put(THIRD_COLUMN, DEFAULT_THIRD_COLUMN);
            values.put(FOURTH_COLUMN, DEFAULT_FOURTH_COLUMN);
            db.insert(TABLE_NAME, null, values);
        }
    }

    @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 " + TABLE_NAME);
        onCreate(db);

    }
}

Вижте тези връзки за повече помощ:

  • Ресурси на низове – документи за масив от низове
  • Android:Попълване на таблица от файл с ресурси с помощта на масив от низове (SQLite)

Друго нещо, което направих, е да направя базите данни предварително и след това просто да ги копирам в папката на базата данни, когато приложението е инсталирано. Това може да работи по-добре, ако имате голямо количество данни и не искате да изтегляте базата данни от Интернет. Ако искате да копирате вашата база данни, вижте този отговор.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite - JOIN изявления

  2. Използвайте Firebase DB с локална DB

  3. Използване на стая DB в проект за библиотека

  4. Запитвайте само първите данни от таблица

  5. Android - SQLite - ИЗБЕРЕТЕ МЕЖДУ Дата1 И Дата2