(SQLiteDatabase& SQLiteOpenHelper)重复的功能

时间:2012-05-08 23:33:43

标签: android sqlite software-design

我可以通过两种方式打开SQLiteDatabase:

SQLiteDatabase.openDatabase()
SQLiteOpenHelper.getWritableDatabase ()

在使用SQLiteDatabase.openDatabase()

时,除了更多控制之外,两种方法之间似乎没有区别

Q1-为什么重复?

Q2-从软件设计的角度我如何从中受益

2 个答案:

答案 0 :(得分:1)

创建自己的扩展SQLiteOpenHelper的类允许您从主代码中删除大量SQLite数据库代码。您可以覆盖onCreate(...)onUpdate(...)方法,以允许它在您的应用首次运行时自动创建数据库,并在将来升级您的应用时更新数据库。

它也很有用,因为您可以向扩展SQLiteOpenHelper添加方法来执行所有'样板'任务(查询,插入,删除等)。实际上,您的主代码永远不需要引用数据库 - 它可以简单地调用扩展SQLiteOpenHelper类的方法。

答案 1 :(得分:0)

SQLiteDatabase提供较低级别的访问和控制,而如上所述,SQLiteOpenHelper负责处理很多样板代码,您通常应该更喜欢它。您需要使用SQLiteDatabase的一种情况是,当您想要在外部存储上打开数据库(通常预先填充)时 - SQLiteOpenHelper您无法指定数据库文件位置,它默认创建一个在您应用的私人目录中(org.myapp/databases下)。