如何防止在android中复制SQLite数据库?

Ozz*_*zzy 2 sqlite android duplicates

我的应用程序在Internet上读取XML文件,记录时间并创建/写入SQLite数据库.下次需要数据时,如果时间> 24小时,则更新数据库(再次下载xml).

问题是每当我在AVD中重新启动应用程序时,它都必须重新下载,因此我注意到数据库中的所有数据都被重新写入(重复).所以我有20个(10 + 10个重复),而不是10个项目.如果我再次重新启动,我会再复制10件物品.

我想过如何防止数据库重复(或删除旧条目),所以我决定每次下载内容时都增加数据库版本.我认为这将触发onUpgrade()方法,因此数据将被清除,但没有任何变化.

现在我一无所知.我该怎么办呢?

小智 5

在您的数据库上创建您将要使用UNIQUE约束.您可能不想要我使用的ON CONFLICT REPLACE,但您应该明白这一点.

对于Ex:

private static final String DATABASE_CREATE_NEWS= "create table news (_id integer primary key autoincrement, "title text not null, description text not null, date text not null, LastModified text not null, UNIQUE(title, date) ON CONFLICT REPLACE);";
Run Code Online (Sandbox Code Playgroud)

这是另一个可以讨论它的坚实主题. SQLite表约束 - 在多列上唯一

这里有一些关于android sqlite的更多信息:http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html