SQLite
 sql >> Baza danych >  >> RDS >> SQLite

zainicjować bazę danych sqlite android

Inne odpowiedzi nie wydawały się odpowiadać, jak faktycznie wypełnić bazę danych początkowymi wartościami, więc podzielę się tym, jak to zrobiłem tutaj.

Zasadniczo zapisujesz kolumny bazy danych jako tablice ciągów w pliku xml. Pokażę tylko jedną tablicę, ale możesz zrobić więcej dla innych kolumn. (Musisz jednak być ostrożny z wieloma kolumnami, aby nie zepsuć kolejności tablicy, a tym samym zepsuć wierszy bazy danych.)

Utwórz plik /res/values/arrays.xml i dodaj do niego tablicę.

<?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>

Następnie możesz uzyskać tę tablicę podczas tworzenia bazy danych w swojej klasie pomocniczej. Oto, co zrobiłem:

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);

    }
}

Aby uzyskać dodatkową pomoc, zobacz te linki:

  • Zasoby ciągów — dokumenty dotyczące tablic ciągów
  • Android:Wypełnianie tabeli z pliku zasobów za pomocą tablicy ciągów (SQLite)

Inną rzeczą, którą zrobiłem, jest utworzenie baz danych z wyprzedzeniem, a następnie skopiowanie ich do folderu bazy danych po zainstalowaniu aplikacji. To może działać lepiej, jeśli masz dużą ilość danych i nie chcesz pobierać bazy danych z Internetu. Jeśli chcesz skopiować bazę danych, zobacz tę odpowiedź.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zalecany sposób / polecenie odczytania danych z serwisu internetowego, przeanalizowania tych danych i wstawienia ich do bazy danych SQLite

  2. Robolectric uzyskujący dostęp do bazy danych zgłasza błąd

  3. 2 sposoby na zwrócenie uniksowego znacznika czasu w SQLite

  4. Co to jest wygenerowana kolumna?

  5. Jak przetłumaczyć funkcję array_agg PostgreSQL na SQLite?