我有一个包含多个表的数据库。这些表之一(运动)是我必须放置一个静态对象列表的地方,每个对象都有一个_id、名称、徽标和一个 int。_id 将被其他表用于执行一些查询(例如,从“table X”中选择,其中 sport_id = _id),所以它不应该超时更改(有没有办法更新对这个 _id 的所有引用,如果它会改变?)。我应该把代码放在哪里(我认为这将是一个简单的 db.insertSport() 列表)以使其仅添加一次这一行(并检查行号是否增加,以添加新行)?不会有太多排,最多50排。
问问题
474 次
1 回答
0
我想我会在 dbHelper 中创建一个方法来插入该数据,然后在应用程序启动时立即调用该方法。我在这里做了几个假设......首先,您将使用应用程序发送此静态信息,当您想要添加更多信息时,您将发送一个新版本。
您可以将数据作为文本文件存储在资产文件夹中,然后在方法中执行批量插入读取文件。
如果您正确设置它(使用方法中insertWithOnConflict
的CONFLICT_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 类(具有常量和方法)
于 2012-05-23T15:20:22.430 回答