星期四, 11月 03, 2011

SQLiteOpenHelper

Android應用程式學習筆記

SQLiteOpenHelper

主要功能用於管理資料庫創建與版本的helper類。

此類實現了onCreate(SQLiteDatabase)、onUpgrate(SQLiteDatabase , int , int ),並可以選擇性地實現onOpen(SQliteDatabase),如果資料庫不存在,回呼onCreate(SQLiteDatabase)方法建立資料庫;如果版本不同或需要更新,回呼onUpgrade(SQLiteDatabase , int , int )方法資料庫升級;如果資料庫存在,回呼onOpen(SQLiteDatabase)打開資料庫。

此類別可以使ContentProvider容易地實現,避免阻塞應用程式開啟時資料庫要長時間更新。

它有兩種建構式:

public SQLiteOpenHelper(Context context , String name , SQLiteDatabase.CursorFactory factory , int version)
建立Helper物件來建立、打開、管理資料庫,此方法回傳很快,資料庫直到呼叫getWritableDatabase()或是getReadableDatabase()才會建立或是打開。  
參數: context-使用打開或是建立資料庫;name-資料庫名稱;factory-用來建立cursor物件,null表示為使用預設;version-資料庫版本,通常從1開始。如果版本太舊,呼叫onUpgrade(SQLiteDataBase , int , int )更新資料庫,如果版本太新,呼叫onDwongrade(SQLiteDatabase ,int ,int)更新資料庫。


此類實現的方法:
public void close()
關閉任何開啟的資料庫。
public SQLiteDatabase getReadableDatabase()
建立且/或開啟資料庫,回傳唯讀的資料庫。 
如getWritableDatabase()方法,此方法可能花較長的時間才會回傳,所以你不應該在應用程式的主執行續中呼叫,應該從ContentProvider.onCreate()。
returns: 回傳一個資料庫物件,直到getWritableDatabase()或是close()呼叫時才變成無效。
throws: 如果無法開啟時丟出SQLiteException例外。 
public SQLiteReadableDatabase()
建立且/或讀及寫的資料庫,第一次呼叫此方法,資料庫被開啟並且呼叫onCreate(SQLiteDatabase)、onUpgrade(SQLiteDatabase , int , int )方法,選擇性地呼叫onOpen(SQLiteDatabase)方法。
更新資料庫可能要花較長時間,你不應該在應用程式主執行續中呼叫此方法,應該從ContentProvider.onCreate()。
returns: 回傳資料庫物件 ,直到close()方法呼叫時才無效。
throws: 如果無法寫入資料庫,丟出例外SQLiteException。 
 public void onCreate(SQLiteDatabase db)
當資料庫第一次被建立時呼叫此方法,建立資料表的地方。
參數: db資料庫。 
public void onUpgrade(SQLiteDatabase db , int oldVersion , int newVersion)
資料庫升級時呼叫此方法,應該利用此方法實現摘除資料表、新增資料表或任何升級需要的工作。 

沒有留言:

張貼留言