Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于数据库和数组列表的正确编程实践_Java_Android_Sqlite_Android Listview_Arraylist - Fatal编程技术网

Java 关于数据库和数组列表的正确编程实践

Java 关于数据库和数组列表的正确编程实践,java,android,sqlite,android-listview,arraylist,Java,Android,Sqlite,Android Listview,Arraylist,我目前正在开发一个android应用程序,希望使用sqlite保存一些数据。我对数据库非常陌生,但我会阅读它们,所以我的问题更具理论性 在我的应用程序中,我有一个Arraylist,其中对象具有基本类型的字段(字符串(名称)、字符串(地址)等)。用户可以创建要添加到arraylist的新对象 从arraylist创建和填充数据库是一种良好的编程实践吗?(即,使arraylist成为用户和数据库之间的“中间人”:new object->arraylist->database) 例如,我想使用自定义

我目前正在开发一个android应用程序,希望使用sqlite保存一些数据。我对数据库非常陌生,但我会阅读它们,所以我的问题更具理论性

在我的应用程序中,我有一个Arraylist,其中对象具有基本类型的字段(字符串(名称)、字符串(地址)等)。用户可以创建要添加到arraylist的新对象

从arraylist创建和填充数据库是一种良好的编程实践吗?(即,使arraylist成为用户和数据库之间的“中间人”:new object->arraylist->database)


例如,我想使用自定义arrayAdapter创建一个listView;我应该直接从数据库还是从arraylist中提取值?这有关系吗?

对数据库的更改应该在尽可能小的事务中进行。每个事务要么完全发生,要么根本不发生。您不希望某些实体(如个人地址)被部分存储。如果某个事务因某种原因失败(如违反了数据库约束),则应回滚整个事务,就像它从未发生过一样

也就是说,如果每个实体都可以用自己的事务处理,那么使用实体集合在数据库上执行插入操作将被视为不好的做法。集合中的单个故障将导致整个事务回滚,即使某些元素在可接受的情况下也是如此

如果集合的每个元素都单独插入到数据库中,那就可以了,但问题是,在用户将其插入集合很久之后,您可能不得不让用户处理插入错误。假设用户输入3个地址,然后点击“保存”,这将导致它们被提交到数据库。如果地址2失败,您需要提醒用户。现在,用户必须修复地址2后,他们认为他们已经完成了它


最佳实践是在应用程序加载时使用数据库中的所有相关数据填充内存中的集合。当用户输入新地址时,应用程序应首先尝试将其存储在数据库中。如果插入成功,还可以将其存储在集合中,以便用户可以使用它。内存中的集合应尽可能地反映数据库中的相关数据。

我不确定这是否正确(因为我不完全确定我是否理解这个问题),但总是从数组列表填充数据库听起来不是个好主意。如果存在永不更改的项,为什么要不断更新不需要的数据库?我认为你应该试着使用其中一种。有些情况下这是有意义的,有些情况下则不然。这取决于其他活动/服务是否会更改数据库,以及数据库中有多少内容。