防止将数据重新插入数据库表[Android]
现在,我正在做一个项目,涉及从MovieDB获取电影数据。我使用Schematic作为我的内容提供者生成器,以避免制作一个内容提供者生成器的麻烦。到目前为止效果很好 这里我要问的问题是我的代码是如何构造的。现在,包含AsyncTask的片段调用任务以获取数据,每次应用程序加载MainActivity时都会调用该任务。数据被提取并插入到数据库表中;游标不会返回null并获取我存储的数据。然而,我遇到了一个我认为是问题的地方,我再次获取数据并将其存储到同一个数据库中。如果我加载到DetailActivity、SettingsActivity或任何其他离开MainActivity但通过后退按钮返回的活动中,就会发生这种情况 日志语句似乎表明我的数据再次被重新插入,导致同一数据库表中的相同条目重复出现。我可以想出一些临时解决方案,其中一个是在启动应用程序时取消获取数据的调用,而不是通过使用操作栏上的刷新按钮获取数据。另一个方法可能是使表的列唯一,特别是保存youtube视频键的youtube视频键字符串。我现在还不确定该怎么办防止将数据重新插入数据库表[Android],android,sql,database,android-contentprovider,Android,Sql,Database,Android Contentprovider,现在,我正在做一个项目,涉及从MovieDB获取电影数据。我使用Schematic作为我的内容提供者生成器,以避免制作一个内容提供者生成器的麻烦。到目前为止效果很好 这里我要问的问题是我的代码是如何构造的。现在,包含AsyncTask的片段调用任务以获取数据,每次应用程序加载MainActivity时都会调用该任务。数据被提取并插入到数据库表中;游标不会返回null并获取我存储的数据。然而,我遇到了一个我认为是问题的地方,我再次获取数据并将其存储到同一个数据库中。如果我加载到DetailActi
如果有任何解决方案,我将不胜感激。谢谢。添加
唯一
或主
键,使用替换
作为冲突解决方案
像这样的
@DataType(DataType.Type.INTEGER)
@PrimaryKey(onConflict = ConflictResolutionType.REPLACE)
String UNIQUE_COLUMN = "unique_column";
它与@PrimaryKey
、@Unique
和@Check
一起工作。更多信息可以在和SQlite的文档中找到
有一些限制:
- 如果存在多个
,则原理图将忽略@PrimaryKey
onConflict
- resolution
将替换一行中的所有列,而不仅仅是insert中提供的列Replace
唯一
或主
键,使用替换
作为冲突解决方案
像这样的
@DataType(DataType.Type.INTEGER)
@PrimaryKey(onConflict = ConflictResolutionType.REPLACE)
String UNIQUE_COLUMN = "unique_column";
它与@PrimaryKey
、@Unique
和@Check
一起工作。更多信息可以在和SQlite的文档中找到
有一些限制:
- 如果存在多个
,则原理图将忽略@PrimaryKey
onConflict
- resolution
将替换一行中的所有列,而不仅仅是insert中提供的列Replace