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

时间:2012-02-03 02:06:08

标签: android sqlite

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

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

SQLiteDatabase
SQLiteOpenHelper

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

1 个答案:

答案 0 :(得分:5)

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

  

public synchronized void 关闭()

     

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

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

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

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

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