其他的答案做似乎没有回答如何实际用初始值填充数据库,所以我会分享我是如何在这里做到的。
基本上,您将数据库列保存为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);
}
}
请参阅以下链接以获得更多帮助:
我做的另一件事是做提前的数据库和那么只需在安装应用程序时将其复制到数据库文件夹即可。如果您有大量数据并且您不想从Internet上下载数据库,这可能会更好。如果您想复制数据库,请参阅this answer。
你首先必须创建一个_table_来,然后有_rows_初始化 –
我没有创建表和所有我只是随便与初始化麻烦.. – user1936104
@Arash我做了令人惊讶的是他们没有太多的初始化 – user1936104