0

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

SQLiteDatabase.openDatabase()
SQLiteOpenHelper.getWritableDatabase ()

似乎两种方法之间没有区别,除了使用时更多的控制SQLiteDatabase.openDatabase()

Q1-为什么要重复?

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

4

2 回答 2

2

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

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

于 2012-05-08T23:41:33.147 回答
0

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

于 2012-05-09T02:50:35.307 回答