我应该在SQLiteDatabase和SQLiteOpenHelper上调用.close()吗?

sam*_*wei 6 sqlite android

SQLiteOpenHelper dbOpenHelper = new (ctx, nameofdb);
SQLiteDatabase db = dbOpener.getWritableDatabase();
Run Code Online (Sandbox Code Playgroud)

我是否必须打电话.close()给这两个,或者只是其中一个就足够了?如果是,那么哪一个?

SQLiteDatabase
SQLiteOpenHelper
Run Code Online (Sandbox Code Playgroud)

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

Squ*_*onk 5

如果你看一下SQLiteOpenHelper.close()的文档......

public synchronized void close()

关闭所有打开的数据库对象

它没有关闭SQLiteOpenHelper,它关闭了数据库.

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

例如,如果您有一个查询,则定期使用获取适配器的游标来填充视图,在SQLiteOpenHelper类中创建一个方法并将查询放入其中.

换句话说,不要在主代码中获得对实际数据库的引用,只需SQLiteOpenHelper为您完成所有操作.