SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Initialisieren Sie eine SQLite-Datenbank für Android

Die anderen Antworten schienen nicht zu beantworten, wie die Datenbank tatsächlich mit Anfangswerten gefüllt werden sollte, also werde ich hier mitteilen, wie ich es gemacht habe.

Grundsätzlich speichern Sie Ihre Datenbankspalten als String-Arrays in einer XML-Datei. Ich werde nur ein Array zeigen, aber Sie könnten mehr für andere Spalten tun. (Bei mehreren Spalten müssten Sie jedoch vorsichtig sein, um die Array-Reihenfolge und damit Ihre Datenbankzeilen nicht durcheinander zu bringen.)

Erstellen Sie eine /res/values/arrays.xml-Datei und fügen Sie ihr das Array hinzu.

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

Dann können Sie dieses Array abrufen, wenn Sie die Datenbank in Ihrer Hilfsklasse erstellen. Folgendes habe ich getan:

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

    }
}

Weitere Hilfe finden Sie unter diesen Links:

  • String-Ressourcen - String-Array-Dokumentation
  • Android:Füllen einer Tabelle aus einer Ressourcendatei mit einem String-Array (SQLite)

Eine andere Sache, die ich getan habe, ist, die Datenbanken im Voraus zu erstellen und sie dann einfach in den Datenbankordner zu kopieren, wenn die App installiert ist. Das funktioniert möglicherweise besser, wenn Sie über eine große Datenmenge verfügen und die Datenbank nicht aus dem Internet herunterladen möchten. Wenn Sie Ihre Datenbank kopieren möchten, lesen Sie diese Antwort.