之前講過在ANDROID應用開發中我們使用SHAREDPREFERENCE與檔案操作資料持久訪問的問題,今天我就把SQLITE在ANDROID中應用的詳細操作也介紹下吧:
在ANDROID應用開發中,我們可能最好奇的就是對資料持久保持的操作是怎麼實現的了,GOOGLE採用了最輕便與最靈活的資料訪問方式,也就是SQLITE這麼一個輕量級的資料持久訪問方式,之前的SHAREDPREFERENCES只是對小資料與其參數配置方面所做的要求,以及在本地檔案進行儲存的方式來訪問,但是我們需要像在PC終端使用MYSQL,或者ORACLE之類的來對資料進行管理操作,使用SQLITE是同樣可以實現的,如果你之前是做J2EE開發的,你可能對MYSQL,ORACLE之類的資料庫操作已經很熟悉了,如果是那樣的話,你再來操作SQLITE也就問文生意了,他們的最大不同點就是一個小得可以直接放進瀏覽器裡進行操作,一個了需要在本地非常複雜的安裝與配置然後以伺服器的方式進行管理來操作,從這裡就可以知道我們在做手機開發時為什麼要使用SQLITE資料庫了,下面就具體介紹下其操作步驟與可能會遇到的問題:
在我們對其SQLITE資料庫初次操作時,我們會調用兩個方法,分別是:getReadableDatabase(),getWritableDatabase(),當然在你第一次操作時首先你建立的操作類肯定要先繼承SQLiteOpenHelper這個內,它要求你去實現兩個方法,分別是:onCreate(SQLiteDatabase db);onUpgrade(SQLiteDatabae db,int oledVersion,int newVersion),還有就是你必須要實現一個構造器,即你建立的類為OpenSQLiteDemo類,其構造器為:public OpenSQLiteDemo(Context context,String name,Cursor cursorFactory,int version){super(context,name,cursorFactory,version);},這樣可以構造出一個內容物件出來,在你操作方法時,可以使用內容物件來操作,為此我在調用這個構造器會傳送一個版本號碼,通過這個版本號碼可以去判斷,我們到底是調用是否需要去調用onUpgrade()方法來更新資料表的結構,我們想來看一下源碼對其判斷的操作吧:當我們調用SQLiteOpenHelper類中的getWritableDatabase方法時,首先會有一個用來儲存資料庫物件的上下文來進行判斷,即mDatabase!=null與mDatabase.isOpen()與mDatabae.isReadOnly()後,如果資料庫已經建立就跳過,否則就直接返回已經建立的mDatabae,當第一次執行是肯定會跳過去建立新庫,注意在此期間還有一個步驟就是,它判斷在安裝初始化為FLASE時拋出非狀態異常,可以從源碼這句來說明:if(mIsInitializing is false){throw new IllgealStateException("getWritableDtabase called recurisively");},然後我們通過版本號碼,來判斷,版本號碼時時候等於0,初始預設為0,此時就會調用onCreadte(db)來進行新建立庫,這可以根據構造器你的名稱來設定庫名,如果我已經建立人這個資料庫,然而我想對其資料庫表結構變更時,或者是版本進行更新時,我們可以設定它的版本號碼於不同之前的版本號碼即可,一般為數字上浮來設定,這樣,我們就可以在onUpgrade()方法裡對資料表進行操作,可以對其執行execSQL(sql)方法來執行如對其表增加一列,和刪除某列都行,這時,我們在調用SQLiteOpenHelper類的getWritableDatabase方法時就會判斷其版本號碼是否與之前相同,如果不同,就會調用onUpgrade(db,version,mNewVersion)方法來進行更新,OK,這是講我們建立資料庫時的操作,不要忘了,第一次操作,會判斷一個方法:openOrCreateDatabase()方法對其資料庫建立與否的操作,下面我們就來介紹通過SQLITE來對資料進行CURD的操作,在SQLITE中也有CURD四個操作的方法,只是我們更習慣去使用SQLITE提供的execSQL(代表增加,更新,刪除的操作),rawQuery(代表查詢)的操作,因為只有兩個方法,使用起來方便靈活,只是在這裡,我們可以注意一下,我們在進行相應操作的時候,最好找當前類中對上下文進行構造,然後通過上下文來擷取去類下的資訊,如果在你想對另外一個類進行操作時,如果你直接在沒有把上下文構造出來就進行使用上下文來構造的話,就會拋null 指標異常,這裡請特別注意,在我的資源你有源碼提供下載與其詳細參考,其CURD的操作找這裡我也就不在詳細熬術,與在J2EE中操作ORACLE資料庫一樣,很簡單,所以,有疑問的就去把我的源碼下載下來吧:http://jiangshide.download.csdn.net/