Java 重复从对象列表更新数据库中的记录
我有一个包含以下对象的列表:Java 重复从对象列表更新数据库中的记录,java,android,sql,sqlite,android-sqlite,Java,Android,Sql,Sqlite,Android Sqlite,我有一个包含以下对象的列表: public class Foo { public String title; public String subject; } 例如:List mFoo=new ArrayList() 我的数据库中有一个表,具有相同的名称和属性 此列表包含大约1000个对象。第一次处理此列表时,所有对象都将存储在数据库中 下一次,列表中的某些对象将更改,或者一些新对象也将添加它。问题就在这里 如何更新和向数据库添加新对象,以避免将数据库中存储的所有对象加载到其他
public class Foo {
public String title;
public String subject;
}
例如:List mFoo=new ArrayList()代码>
我的数据库中有一个表,具有相同的名称和属性
此列表包含大约1000个对象。第一次处理此列表时,所有对象都将存储在数据库中
下一次,列表中的某些对象将更改,或者一些新对象也将添加它。问题就在这里
如何更新和向数据库添加新对象,以避免将数据库中存储的所有对象加载到其他列表中,然后比较两个列表
是否存在某种方式可以最大限度地减少对数据库的访问?(我不希望每次加载1000个对象)
编辑1:展开信息
我从解析外部源数据(html代码)的方法中获取列表mFoo
。然后我将对象作为Foo保存在数据库中
当我保存一个对象时,我会得到一个id
public class Foo {
private String id;
public String title;
public String subject;
}
每次执行该方法时,我都会得到一个列表,其中可能包含数据库中已经存在的对象Foo,但我没有它的id,因为它们是新实例 我建议使用一些标志将实例标记为脏实例:
public class Foo {
private String title;
private String subject;
private boolean isDirty=true;
public void onPersist(){
this.isDirty=false;
}
public String setTitle(String title){
this.isDirty=true;
this.title=title;
}
//more setters und getters
}
编辑1
正如d'alar'cop指出的,您似乎别无选择,只能根据标题和/或主题查询数据库
但是根据您的标签,您正在使用sqlite。如果可以控制tabledefinition,则可以在create语句中查看具有唯一约束的子句。这样,您应该能够插入列表并让数据库完成它的工作
致以最良好的祝愿,
sam因此,为了澄清,数据库和列表将更改(去同步)?否。当列表更改(对象更改或添加新对象)时,数据库必须保存列表中的更改。但我无法在每次添加对象或对象更改时更新数据库。我有完整的列表,我必须与数据库中的记录进行比较。(作为合并操作)则提供的答案是确定的。虽然我可能会建议你再列一份清单,但当你更改/添加了一些东西时,你会把它放在第二份清单中。。。然后只将第二个列表加载到数据库中。这对你的情况有用吗?我补充了一些额外的信息。不幸的是我不能使用它,当我怀疑你注定需要比较他们所有。。。也许你可以考虑做一些改造,让它不是这样的?我的意思是,这样你就可以保留ID,或者这样当方法运行时,你就不会失去你已经拥有的一切?