我目前正在开发一个Android应用程序,并希望使用sqlite保存一些数据。我对数据库非常陌生,但会阅读它们,所以我的问题更具理论性。
在我的应用程序中,我有一个Arraylist,其中对象具有基本类型的字段(String(name),String(address)等)。用户可以创建要添加到arraylist的新对象。
从arraylist创建和填充数据库是否是一种很好的编程习惯? (即,让arraylist成为"中间人"在用户和数据库之间:新对象 - > ArrayList - >数据库)。
例如,我想使用自定义arrayAdapter创建一个listView;我应该直接从数据库或arraylist中提取值吗?这有关系吗?
答案 0 :(得分:3)
对数据库的更改应在事务中尽可能小。每笔交易要么完全发生,要么根本不发生。您不希望部分存储某个实体(如人的地址)。如果某个事务因某种原因失败(比如违反了数据库约束),整个事务应该像往常一样回滚。
话虽如此,如果可以使用自己的事务处理每个实体,则使用一组实体来对数据库执行插入将被视为不良做法。集合中的单个故障将导致整个事务回滚,即使某些元素可接受。
如果集合中的每个元素都单独插入到数据库中,那就没问题,但问题是您可能必须让用户在将插入错误插入集合后很久才处理插入错误。假设用户输入3个地址然后点击“保存”,这将导致他们被提交到数据库。如果地址编号2失败,则需要提醒用户。现在,用户必须在他们认为完成后才能修复地址编号2 ...
最佳做法是在应用程序加载时使用数据库中的所有相关数据填充内存中的集合。当用户输入新地址时,应用程序应首先尝试将其存储在数据库中。如果插入成功,则还将其存储在集合中,以便用户可以使用它。内存中的集合应尽可能地反映数据库中的相关数据。