android - 我应该在 SQLiteDatabase 和 SQLiteOpenHelper 上调用 .close()

标签 android sqlite

SQLiteOpenHelper dbOpenHelper = new (ctx, nameofdb);
SQLiteDatabase db = dbOpener.getWritableDatabase();

我是否必须对这两个都调用 .close(),还是只调用其中一个就足够了?如果是,那么是哪一个?

SQLiteDatabase
SQLiteOpenHelper

我遇到的问题是我在 Eclipse 的 DDMS View 中看不到一个特定的行,但是当我使用 Cursor 获取它时,它显示我确实有那个条目。所以我想知道这可能是由于没有正确关闭数据库造成的?任何可以提供帮助的人都会很棒。谢谢!

最佳答案

如果您查看 SQLiteOpenHelper.close() 的文档...

public synchronized void close ()

Close any open database object.

它不会关闭 SQLiteOpenHelper,它会关闭数据库。

除此之外,如果您的代码正确,您可以完全避免直接处理数据库对象。

例如,如果您有一个查询,您经常使用它来获取适配器的游标以填充 View ,请在您的 SQLiteOpenHelper 类中创建一个方法并将查询放入其中。

换句话说,不要在主代码中获取对实际数据库的引用,只需让 SQLiteOpenHelper 为您做所有事情。

关于android - 我应该在 SQLiteDatabase 和 SQLiteOpenHelper 上调用 .close(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9122803/

相关文章:

android - 系统设置将通知音量与铃声音量联系起来

android - 使用 Gson 将 JSON 转换为 Android 中的 ListView

android - 你如何在 Dimens/Strings id 和它们的实际值之间切换?

android - 由于每次启动时创建数据库而导致应用程序崩溃

AndroidQ DownloadManager.Request.setDestinationUri

android - 该项目缺少构建所需的 Android SDK

ruby-on-rails-3 - 导入 csv 文件后,在我的 sqlite db 表中创建了额外的行

java - String 不断调用 NullPointerException,不确定它从哪里获取

android - Android 中的 SQL 参数化查询

java - Android 创建 SQLite 数据库并插入行 - 最佳实践?