Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Android 澄清何时打开和关闭数据源_Android_Database - Fatal编程技术网

Android 澄清何时打开和关闭数据源

Android 澄清何时打开和关闭数据源,android,database,Android,Database,我在这个问题上做了很多研究,我对最佳实践感到困惑 最初我有: A) 在我的主类标题区域中创建了一个数据库对象,然后根据需要将其传递给函数。后来我读到,每次使用前都应该打开和关闭数据库 因此,我: B) 转到使用SQL命令并创建新数据库对象的每个函数(传递上下文),通过SQL创建填充游标,然后在返回之前关闭数据库。然而,我后来读到这样做很昂贵 现在我想: C) 我应该在每个使用数据库对象的子类中创建一个新的数据库对象,并根据需要打开和关闭它 我为noob和看似设计的问题感到抱歉(如果它超出Stac

我在这个问题上做了很多研究,我对最佳实践感到困惑

最初我有:

A) 在我的主类标题区域中创建了一个数据库对象,然后根据需要将其传递给函数。后来我读到,每次使用前都应该打开和关闭数据库

因此,我:

B) 转到使用SQL命令并创建新数据库对象的每个函数(传递上下文),通过SQL创建填充游标,然后在返回之前关闭数据库。然而,我后来读到这样做很昂贵

现在我想:

C) 我应该在每个使用数据库对象的子类中创建一个新的数据库对象,并根据需要打开和关闭它

我为noob和看似设计的问题感到抱歉(如果它超出StackOverflow的范围,请删除它),但是,我真的很困惑如何处理它以避免错误,以及Google希望我们如何做

关于

建议使用缓存数据库对象的。从
SQLiteOpenHelper
参考:

一旦成功打开,数据库将被缓存,因此您可以调用 方法,每次需要写入数据库时。(一定要 当不再需要数据库时,调用
close()

因此,我选择一个带有
SQLiteOpenHelper
实例的单例,这样您就可以从任何地方访问它。然后在需要的地方获取数据库,并在应用程序的退出点(如果有)关闭它。这样,您只能在需要时打开数据库,但也可以在其他任务中重复使用相同的连接

如果您只需要单个任务的数据库和/或其他应用程序访问同一个数据库,则可以考虑在完成数据库任务之后直接关闭它;有一个关于关闭的讨论。

检查它是否有帮助