sql >> Database teknologi >  >> RDS >> SQLite

initialisere en sqlite database android

De andre svar lod ikke til at svare på, hvordan man faktisk udfylder databasen med startværdier, så jeg vil dele, hvordan jeg gjorde det her.

Grundlæggende gemmer du dine databasekolonner som string-arrays i en xml-fil. Jeg vil blot vise en matrix, men du kan gøre mere for andre kolonner. (Du skal dog være forsigtig med flere kolonner for ikke at ødelægge rækkefølgen på matrixen og dermed ødelægge dine databaserækker.)

Lav en /res/values/arrays.xml fil og tilføj arrayet til den.

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

Så kan du få det array, når du opretter databasen i din hjælperklasse. Her er, hvad jeg gjorde:

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

    }
}

Se disse links for mere hjælp:

  • String-ressourcer - String Array-dokumenter
  • Android:Udfyldning af en tabel fra ressourcefil ved hjælp af string array (SQLite)

En anden ting, jeg har gjort, er at lave databaserne i forvejen og så bare kopiere dem til databasemappen, når appen er installeret. Det kan fungere bedre, hvis du har en stor mængde data, og du ikke ønsker at downloade databasen fra internettet. Hvis du vil kopiere din database, så se dette svar.



  1. Send ordbog<string,int> til Stored Procedure T-SQL

  2. Rekonstruer Standby DB

  3. Sådan viser du dato i et andet format i Oracle

  4. Opgradering af MariaDB 10.0 til 10.3.9 på Ubuntu 16.04