SQLiteOpenHelper-API

结构

继承关系

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(SQLiteDataBaseintint)会被调用去升级数据库;如果数据库是新的,onDowngrade(SQLiteDatabaseintint)会被调用去降级数据库。

     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(SQLiteDataBaseintint)会被调用去升级数据库;如果数据库是新的,onDowngrade(SQLiteDatabaseintint)会被调用去降级数据库。

     errorHandler  sqlite报告一个数据库毁坏错误时,DatabaseErrorHandler会被使用。

 

 

Public Methods

synchronized void

close()

Close any open database object.

关闭任何打开的数据库对象

String

getDatabaseName()

Return the name of the SQLite database being opened, as given to the constructor.

返回SQLite数据库的名称,就是在构造函数中给出的

SQLiteDatabase

getReadableDatabase()

Create and/or open a database.

创建并/或打开数据库

这和getWritableDatabase()返回的对象是同一个,除非一些因素要求数据库只能以read-only的方式被打开,比如磁盘满了。在这种情况下,一个只读的数据库对象将被返回。如果这个问题被修改掉,将来调用getWritableDatabase()就可能成功,而这时read-only数据库对象将被关闭,并且读写对象将被返回。

getWritableDatabase(),这个方法需要很长时间才返回,所以你不该在应用程序的主线程中调用它,包括在方法ContentProvider.onCreate()中调用。

返回值

         一个有效的数据库对象,直到getWritableDatabase() or close() 被调用

异常

         SQLiteException       如果数据库不能被打开

 

SQLiteDatabase

getWritableDatabase()

Create and/or open a database that will be used for reading and writing.

参考getReadableDatabase()

返回值

          一个有效的读写数据库对象直到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

onCreate(SQLiteDatabase db)

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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值