使用静态数据在Android中填充SQLiteDatabase

时间:2012-05-23 15:09:34

标签: android sqlite insert

我有一个包含多个表的数据库。其中一个表(运动)是我必须放置一个静态的对象列表,每个对象都带有_id,name,logo和int。 _id将被其他表用来做一些查询(例如,从“表X”中选择sport_id = _id),所以它不应该超时更改(有没有办法更新所有对此_id的引用,如果它将更改?)。 我应该把代码放在哪里(我认为它将是一个简单的db.insertSport()列表),使它只添加一行这一行(并检查行号是否增长,添加新行)? 没有多少行,50就是最好的。

1 个答案:

答案 0 :(得分:0)

我想我会在dbHelper中创建一个插入该数据的方法,然后在app启动时立即调用该方法。我在这里做了几个假设...首先你要通过应用程序发送这个静态信息,当你想要添加更多信息时,你将发布一个新版本。

您可以将数据作为文本文件存储在assets文件夹中,然后在方法中执行批量插入时读取文件。

如果你设置正确(在方法中使用insertWithOnConflictCONFLICT_IGNORE标志),它每次只会添加新行(如果有的话),这样你每次都可以运行它启动并且不担心重复数据或违反约束的崩溃。

如果您只希望它在有其他信息时运行一次然后再运行,请在文本文件中放置一个版本号,然后检查前一个版本号(可以存储在SharedPreferences中)。

修改

使用insertWithOnConflict:

的示例
public long createItem(String yourdata) {
    ContentValues initialValues = new ContentValues();
    initialValues.put(YOUR_COLUMN, yourdata);
    return mDb.insertWithOnConflict(YOUR_TABLE, null, initialValues,
            SQLiteDatabase.CONFLICT_IGNORE);
}

您可以阅读SQLiteDatabase类(包含常量和方法)here