qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Android中數(shù)據(jù)庫升級onUpgrade方法說明

          Andoird的SQLiteOpenHelper類中有一個onUpgrade方法。幫助文檔中只是說當數(shù)據(jù)庫升級時該方法被觸發(fā)。經(jīng)過實踐,解決了我一連串的疑問:
            1. 幫助文檔里說的“數(shù)據(jù)庫升級”是指什么?
            你開發(fā)了一個程序,當前是1.0版本。該程序用到了數(shù)據(jù)庫。到1.1版本時,你在數(shù)據(jù)庫的某個表中增加了一個字段。那么軟件1.0版本用的數(shù)據(jù)庫在軟件1.1版本就要被升級了。
            2. 數(shù)據(jù)庫升級應該注意什么?
            軟件的1.0版本升級到1.1版本時,老的數(shù)據(jù)不能丟。那么在1.1版本的程序中就要有地方能夠檢測出來新的軟件版本與老的數(shù)據(jù)庫不兼容,并且能夠 有辦法把1.0軟件的數(shù)據(jù)庫升級到1.1軟件能夠使用的數(shù)據(jù)庫。換句話說,要在1.0軟件的數(shù)據(jù)庫的那個表中增加那個字段,并賦予這個字段默認值。
            3. 程序如何知道數(shù)據(jù)庫需要升級?
            SQLiteOpenHelper類的構(gòu)造函數(shù)有一個參數(shù)是int version,它的意思就是指數(shù)據(jù)庫版本號。比如在軟件1.0版本中,我們使用SQLiteOpenHelper訪問數(shù)據(jù)庫時,該參數(shù)為1,那么數(shù)據(jù)庫版本號1就會寫在我們的數(shù)據(jù)庫中。
            到了1.1版本,我們的數(shù)據(jù)庫需要發(fā)生變化,那么我們1.1版本的程序中就要使用一個大于1的整數(shù)來構(gòu)造SQLiteOpenHelper類,用于訪問新的數(shù)據(jù)庫,比如2。
            當我們的1.1新程序讀取1.0版本的老數(shù)據(jù)庫時,就發(fā)現(xiàn)老數(shù)據(jù)庫里存儲的數(shù)據(jù)庫版本是1,而我們新程序訪問它時填的版本號為2,系統(tǒng)就知道數(shù)據(jù)庫需要升級。
            4. 何時觸發(fā)數(shù)據(jù)庫升級?如何升級?
            當系統(tǒng)在構(gòu)造SQLiteOpenHelper類的對象時,如果發(fā)現(xiàn)版本號不一樣,就會自動調(diào)用onUpgrade函數(shù),讓你在這里對數(shù)據(jù)庫進行升級。根據(jù)上述場景,在這個函數(shù)中把老版本數(shù)據(jù)庫的相應表中增加字段,并給每條記錄增加默認值即可。
            新版本號和老版本號都會作為onUpgrade函數(shù)的參數(shù)傳進來,便于開發(fā)者知道數(shù)據(jù)庫應該從哪個版本升級到哪個版本。
            升級完成后,數(shù)據(jù)庫會自動存儲最新的版本號為當前數(shù)據(jù)庫版本號。

          posted on 2014-09-28 10:44 順其自然EVO 閱讀(1891) 評論(0)  編輯  收藏 所屬分類: android

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 勃利县| 塔河县| 安图县| 乐都县| 庆阳市| 元谋县| 东乡| 齐齐哈尔市| 竹山县| 敦化市| 郑州市| 田东县| 郸城县| 石景山区| 涟水县| 中卫市| 连云港市| 泽库县| 丰原市| 金华市| 桐乡市| 肇庆市| 韩城市| 托克托县| 乐至县| 临夏市| 收藏| 涞源县| 临洮县| 日喀则市| 丰原市| 桂林市| 旺苍县| 申扎县| 兴安县| 江阴市| 本溪| 星子县| 巴林右旗| 金川县| 平泉县|