继承关系
public abstract class
SQLiteOpenHelper
extends Object
java.lang.Object
? android.database.sqlite.SQLiteOpenHelper
一个帮助类,帮助创建数据库和数据库版本管理。
使用必须创建一个子类来实现其onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int)方法,同时任意实现onOpen(SQLiteDatabase)方法,同时打开数据库操作必须保证数据库存在,如果不存在则创建它,并且对其必要的升级,维护其保持一个最佳的状态。
使用本类提供内容开始创建数据库是非常容易的,首先必须对数据库进行升级,以避免在数据库启动后长期使用而阻塞数据。
举个例子,在NotePad的例子程序中参看类NotePadProvider,在SDK的目录samples/下面。
注意:这个类假定升级的版本号是单调递增的。
Public Constructors |
|
|
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) Create a helper object to create, open, and/or manage a database. 创建一个帮助对象,打开或者管理数据库。该方法通常快速返回。数据库并没有实际创建或打开,直到getWritableDatabase() 或getReadableDatabase()其中一个被调用。 参数 context 用来打开或创建数据库 name 数据库文件名,对一个在内存中的数据库而言是null factory 用来创建对象游标,或者默认为null version 数据库的序号(从1开始);如果数据库是旧的,onUpgrade(SQLiteDataBase,int,int)会被调用去升级数据库;如果数据库是新的,onDowngrade(SQLiteDatabase,int,int)会被调用去降级数据库。 errorHandler 当sqlite报告一个数据库毁坏错误时,DatabaseErrorHandler会被使用。
|
|
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) Create a helper object to create, open, and/or manage a database. 创建一个帮助对象,打开或者管理数据库。该方法通常快速返回。数据库并没有实际创建或打开,直到getWritableDatabase() 或getReadableDatabase()其中一个被调用。 参数 context 用来打开或创建数据库 name 数据库文件名,对一个在内存中的数据库而言是null factory 用来创建对象游标,或者默认为null version 数据库的序号(从1开始);如果数据库是旧的,onUpgrade(SQLiteDataBase,int,int)会被调用去升级数据库;如果数据库是新的,onDowngrade(SQLiteDatabase,int,int)会被调用去降级数据库。 errorHandler 当sqlite报告一个数据库毁坏错误时,DatabaseErrorHandler会被使用。
|
Public Methods |
|
synchronized void |
close() Close any open database object. 关闭任何打开的数据库对象 |
Return the name of the SQLite database being opened, as given to the constructor. 返回SQLite数据库的名称,就是在构造函数中给出的 |
|
Create and/or open a database. 创建并/或打开数据库 这和getWritableDatabase()返回的对象是同一个,除非一些因素要求数据库只能以read-only的方式被打开,比如磁盘满了。在这种情况下,一个只读的数据库对象将被返回。如果这个问题被修改掉,将来调用getWritableDatabase()就可能成功,而这时read-only数据库对象将被关闭,并且读写对象将被返回。 像getWritableDatabase(),这个方法需要很长时间才返回,所以你不该在应用程序的主线程中调用它,包括在方法ContentProvider.onCreate()中调用。 返回值 一个有效的数据库对象,直到getWritableDatabase() or close() 被调用 异常 SQLiteException 如果数据库不能被打开
|
|
Create and/or open a database that will be used for reading and writing. 返回值 一个有效的读写数据库对象直到close()被调用。 异常 SQLiteException 如果数据库不能被打开用于写入
|
|
void |
onConfigure(SQLiteDatabase db) Called when the database connection is being configured, to enable features such as write-ahead logging or foreign key support. 当数据库连接被配置的时候调用,使数据库的一些特性如预写日志(Write-ahead logging)或外键支持可用。 这个方法先于 onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int), onDowngrade(SQLiteDatabase, int, int), 或onOpen(SQLiteDatabase)被调用。 |
abstract void |
Called when the database is created for the first time. 当第一次创建数据库时调用。表格的创建和初始化表格的个数在这里完成。 参数 db 数据库
|
void |
onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) Called when the database needs to be downgraded. 当数据库需要降低版本时候调用。这个方法跟onUpgrade()很相似,但是只要当然版本比被请求的更新,它就会被调用。尽管如此,这个方法不是抽象的,所以它并不强制用户去实现它。如果不被重写,默认的实现将会拒绝降级并且抛出一个SQLiteException。 参数 db 数据库 oldVersion 旧数据库版本 newVersion 新数据库版本
|
void |
onOpen(SQLiteDatabase db) Called when the database has been opened. 当数据库打开时调用。这个实现会在升级数据库之前会检查isReadOnly()。 参数 db 数据库
|
abstract void |
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) Called when the database needs to be upgraded. 当数据库升级时调用。这个实现需要使用该方法去丢弃表格,增加表格,或者做一些其它事情,它需要升级到新的计划中的版本。 SQLite ALTER TABLE文档可以在这找到。如果你添加新的列,你可以使用ALTER TABLE 去把它们插入到活动中的表格中。如果你重命名或移动列,你可以使用ALTER TABLE去重命名这些旧的表格,然后创建新的表格,之后把旧表格的数据放到新的表格上。 参数 db 数据库 oldVersion 旧数据库版本 newVersion 新数据库版本
|
void |
setWriteAheadLoggingEnabled(boolean enabled) Enables or disables the use of write-ahead logging for the database. 设置数据库的预写日志系统(write-ahead logging)是否可用。向前写日志不能用于只读数据库,所以如果数据库被以只读的方式打开,该标志的值将被忽略。 参数 enabled 如果为true,则预写日志系统可用,false则不可用 参见 SQLiteDatabase.enableWriteAheadLogging() |
SQLiteOpenHelper-API,布布扣,bubuko.com
原文:http://blog.csdn.net/u014130695/article/details/23705463