Изглежда, че другите отговори не отговарят как всъщност да се попълва базата данни с първоначални стойности, така че ще споделя как го направих тук.
По принцип вие запазвате колоните на вашата база данни като низови масиви в 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)
Друго нещо, което направих, е да направя базите данни предварително и след това просто да ги копирам в папката на базата данни, когато приложението е инсталирано. Това може да работи по-добре, ако имате голямо количество данни и не искате да изтегляте базата данни от Интернет. Ако искате да копирате вашата база данни, вижте този отговор.