Pro-Android-3 BookProvider SQLiteOpenHelper

 

 

 

 

http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

 

抽象类SQLiteOpenHelper是数据创建和版本控制的帮助类。

 

继承SQLiteOpenHelper的子类需要实现

onCreate(SQLiteDatabase)onUpgrade(SQLiteDatabase, int, int)

可选实现

onOpen(SQLiteDatabase)

 

public abstract void onCreate (SQLiteDatabase db)

这个类在打开数据库之前会检查这个类存不存在,如果不存在将执行onCreate方法。onCreate方法在数据库第一次创建时调用。

 

public abstract void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion)

在需要更新的时候将会调用onUpgrade方法。实现这个方法,一般是先drop tables,然后添加tables。这个方法是和SQLiteOpenHelper的构造器相关连的,

 

public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)

context是用来打开和创建数据库的上下文,name是数据库的名称,version是数据库的版本号。只有当getWritableDatabase() orgetReadableDatabase()被调用时,才会创建数据库或打开。如果当前传入的数据库版本号比上次创建或升级的版本号高,SQLiteOpenHelper就会调用onUpdate()方法。

 

举例说明:

 

ProAndroid3第三章TestProvider项目中的

 

com.ai.android.book.provider.BookProviderMetaData

 

修改DATABASE_VERSION,重新执行TestProvider

//public static final int DATABASE_VERSION = 1;

public static final int DATABASE_VERSION = 2;

 

LogCat,输入inner

05-20 02:26:45.973: D/BookProvider(376): inner onupgrade called

05-20 02:26:45.993: D/BookProvider(376): inner oncreate called

 

对应于代码

 

Log.d(TAG,"inner onupgrade called");

onCreate(db);

Log.d(TAG,"inner oncreate called");

 

LogCat,输入upgrading

05-20 02:26:45.973: W/BookProvider(376): Upgrading database from version 1 to 2, which will destroy all old data

 

对应于代码

Log.w(TAG, "Upgrading database from version "

                          + oldVersion + " to "

                    + newVersion + ", which will destroy all old data");

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值