A helper class to manage database creation and version management.
數(shù)據(jù)庫的創(chuàng)建和版本管理的助手。
SQLiteOpenHelper 是一個(gè)抽象類矛物,abstract class.
擁有成員變量箩言,mName(數(shù)據(jù)庫名稱)腥椒,mNewVersion(數(shù)據(jù)庫版本)成福,mDatabase(數(shù)據(jù)庫)等.
構(gòu)造函數(shù)需要傳遞枚荣,context,數(shù)據(jù)庫名稱边翁,數(shù)據(jù)庫版本等信息.
SQLiteOpenHelper(Context context, String name, CursorFactory factory,int version)
實(shí)現(xiàn)了以下函數(shù):
getDatabaseName
getWritableDatabase
getReadableDatabase
onDowngrade
close
subclass需要實(shí)現(xiàn)以下函數(shù):
public abstract void onCreate(SQLiteDatabase db);
public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion);
面試題1
使用SQLiteOpenHelper的getReadableDatabase()獲得的數(shù)據(jù)庫能不能翎承,做寫的操作
能
面試題2
寫一個(gè)子類繼承SQLiteOpenHelper萝玷,并實(shí)現(xiàn)以下功能
1).創(chuàng)建一個(gè)版本為1的“diaryOpenHelper.db”的數(shù)據(jù)庫巷帝,
2).同時(shí)創(chuàng)建一個(gè) “diary” 表(包含一個(gè)_id主鍵并自增長(zhǎng),topic字符型100長(zhǎng)度矢劲, content字符型1000長(zhǎng)度)
3).在數(shù)據(jù)庫版本變化時(shí)請(qǐng)刪除diary表啊胶,并重新創(chuàng)建出diary表
publicclass DBHelper extends SQLiteOpenHelper{
public final static String DATABASENAME ="diaryOpenHelper.db";
public final static int DATABASEVERSION =1;//創(chuàng)建數(shù)據(jù)庫
public DBHelper(Context context,Stringname,CursorFactory factory,int version)
{
super(context, name, factory,version);
}//創(chuàng)建表等機(jī)構(gòu)性文件
public void onCreate(SQLiteDatabase db)
{
String sql ="create table diary"+"("+"_id integer primary key autoincrement,"+"topic varchar(100),"+"content varchar(1000)"+")";
db.execSQL(sql);
}//若數(shù)據(jù)庫版本有更新甸各,則調(diào)用此方法
public void onUpgrade(SQLiteDatabasedb,int oldVersion,int newVersion)
{
String sql = "drop table if exists diary";
db.execSQL(sql);
this.onCreate(db);
}
}