sql >> Databasteknik >  >> RDS >> SQLite

initiera en sqlite databas android

De andra svaren verkade inte svara på hur man faktiskt fyller databasen med initiala värden så jag kommer att dela hur jag gjorde det här.

I grund och botten sparar du dina databaskolumner som strängmatriser i en xml-fil. Jag kommer bara att visa en array men du kan göra mer för andra kolumner. (Du måste dock vara försiktig med flera kolumner för att inte förstöra arrayordningen och därmed förstöra dina databasrader.)

Skapa en /res/values/arrays.xml-fil och lägg till arrayen i 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>

Sedan kan du få den arrayen när du skapar databasen i din hjälpklass. Det här är vad jag 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 dessa länkar för mer hjälp:

  • Strängresurser - Strängarraydokument
  • Android:Fylla en tabell från resursfil med string array (SQLite)

En annan sak jag har gjort är att göra databaserna i förväg och sedan bara kopiera dem till databasmappen när appen är installerad. Det kan fungera bättre om du har en stor mängd data och du inte vill ladda ner databasen från Internet. Om du vill kopiera din databas, se detta svar.



  1. Hur man skapar en beräknad kolumn i SQLite

  2. 50 Shades of Oracle Database Certification Exam

  3. SQL Server Stored Procedures från Oracle®

  4. MySQL PI() Funktion – Returnera värdet av π (pi)