我的应用程序在Internet上读取XML文件,记录时间并创建/写入SQLite数据库。下次需要数据时,如果时间>24小时,则更新数据库(再次下载XML)。
问题是,每当我在avd中重新启动应用程序时,它必须重新下载,因此我注意到数据库中的所有数据都会再次写入(重复)。所以我没有10个项目,而是有20个(10+10个副本)。如果我重新启动,我会得到另外10项重复。
我考虑了如何防止数据库的重复(或删除旧条目),所以决定每次下载内容时都增加数据库版本。我以为这会触发onupgrade()方法,所以数据会被清除,但不会有任何变化。
现在我不知道了。我该怎么办?
最佳答案
您应该在表示唯一标识符的列上创建索引。
请参见sqlite网站上的this article。
CREATE INDEX ix_tblexample ON TableName ( Column1, Column2, Column3 [, Column4, etc..])
或者(根据您的注释),您可以选择一个光标表并检查每个表。
String sql = "select * from " + tableName + "where column1 = " + param1 + "and column2 = " + param2;
Cursor cur = _db.rawQuery( sql, new String[0] );
if(cur.getCount() == 0)
{
//upload
}