A helper class to manage database creation and version management.
數(shù)據(jù)庫(kù)的創(chuàng)建和版本管理的助手胧谈。
SQLiteOpenHelper 是一個(gè)抽象類禽车,abstract class.
擁有成員變量魂毁,mName(數(shù)據(jù)庫(kù)名稱)滋戳,mNewVersion(數(shù)據(jù)庫(kù)版本)猾担,mDatabase(數(shù)據(jù)庫(kù))等.
構(gòu)造函數(shù)需要傳遞洁段,context陕壹,數(shù)據(jù)庫(kù)名稱质欲,數(shù)據(jù)庫(kù)版本等信息.
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ù)庫(kù)能不能,做寫(xiě)的操作
能
面試題2
寫(xiě)一個(gè)子類繼承SQLiteOpenHelper糠馆,并實(shí)現(xiàn)以下功能
1).創(chuàng)建一個(gè)版本為1的“diaryOpenHelper.db”的數(shù)據(jù)庫(kù)嘶伟,
2).同時(shí)創(chuàng)建一個(gè) “diary” 表(包含一個(gè)_id主鍵并自增長(zhǎng),topic字符型100長(zhǎng)度榨惠, content字符型1000長(zhǎng)度)
3).在數(shù)據(jù)庫(kù)版本變化時(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ù)庫(kù)
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ù)庫(kù)版本有更新,則調(diào)用此方法
public void onUpgrade(SQLiteDatabasedb,int oldVersion,int newVersion)
{
String sql = "drop table if exists diary";
db.execSQL(sql);
this.onCreate(db);
}
}
文末
歡迎關(guān)注我的簡(jiǎn)書(shū)赠橙,分享Android干貨耽装,交流Android技術(shù)。
對(duì)文章有何見(jiàn)解期揪,或者有何技術(shù)問(wèn)題掉奄,都可以在評(píng)論區(qū)一起留言討論,我會(huì)虔誠(chéng)為你解答凤薛。
最后姓建,如果你想知道更多Android的知識(shí)或需要其他資料我這里均免費(fèi)分享,只需你點(diǎn)贊+評(píng)論找我獲取哦