我可以通过两种方式打开 SQLiteDatabase:
SQLiteDatabase.openDatabase()
SQLiteOpenHelper.getWritableDatabase ()
似乎两种方法之间没有区别,除了使用时更多的控制SQLiteDatabase.openDatabase()
Q1-为什么要重复?
Q2-从软件设计的角度来看,我如何从中受益
我可以通过两种方式打开 SQLiteDatabase:
SQLiteDatabase.openDatabase()
SQLiteOpenHelper.getWritableDatabase ()
似乎两种方法之间没有区别,除了使用时更多的控制SQLiteDatabase.openDatabase()
Q1-为什么要重复?
Q2-从软件设计的角度来看,我如何从中受益
创建自己的扩展类SQLiteOpenHelper
允许您从主代码中删除大量 SQLite 数据库代码。您覆盖onCreate(...)
andonUpdate(...)
方法以允许它在您的应用程序首次运行时自动创建数据库,并在您的应用程序的未来升级中更新数据库。
它也很有用,因为您可以将方法添加到扩展SQLiteOpenHelper
中以执行所有“样板”任务(查询、插入、删除等)。实际上,您的主代码永远不需要对数据库的引用——它可以简单地调用扩展SQLiteOpenHelper
类上的方法。
SQLiteDatabase
提供较低级别的访问和控制,同时,如上所述,SQLiteOpenHelper
处理大量样板代码,您通常应该更喜欢它。您需要使用的一种情况SQLiteDatabase
是当您想要在外部存储上打开一个数据库(通常是预填充的)时——由于SQLiteOpenHelper
您无法指定数据库文件位置,它默认为在您的应用程序的私有目录(在 下org.myapp/databases
)中创建一个。