AndroidSqlite資料庫版本升級管理初探
Android Sqlite資料庫版本升級管理初探
http://angrycode.cn/archives/428
在做Android專案涉及到版本升級,而資料庫同樣也會因為需求的變更而導致表的增減以及欄位的增減。這是不可避免的。
麥洛剛開始做專案的時候很少考慮這個問題,但當軟體需要升級版本後,資料庫的表結構很有可能就改變了,如果不考慮資料庫的版本升級,那麼在軟體升級時,就會因為資料庫找不到
某些欄位而出錯。也不能把之前版本的資料庫刪除,因為以前版本的資料就會丟失。因此就需要認真的去管理資料庫的版本了。
Android為開發者提供了SQLiteOpenHelper 這個訪問資料庫的介面。開發者只需要繼承這個介面就可以了,它對外提供了兩個方法:onCreate(SQLiteDatabase db)與
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)。這兩個方法都是由系統自動呼叫的。
onCreate()方法用於初次使用時系統會檢查資料庫的是否檔案.如果不存在則建立資料庫表;如果存在則檢查資料庫的版本號,如果這次的版本號比上次的版本號高,則呼叫onUpgrade()更新資料庫表結構。
在SQLiteOpenHelper的子類的構造方法裡面需要傳遞一個資料庫的版本號,這個版本號是從1開始的,隨著版本的更新,這個號碼也是不斷變化的。
例如軟體在最初時的資料庫版本是1,下次在升級的時候,就需要更改為2了(當然只要改成比上次的版本號要大就行了)。
下面是一個簡單例子,angrycode:
<pre> public class DatabaseHelper extends SQLiteOpenHelper { /** * log tag */ private static final String TAG = "DatabaseHelper"; /** * 資料庫名稱 */ private static final String DB_NAME = "user_manager.db"; /** * 資料庫版本號,預設從1開始,2013/5/31升級為2,需要資料庫更新時,更改此值。 */ private static final int DB_VERSION = 2; private static DatabaseHelper instance = new DatabaseHelper(MyApplication.getContext()); private DatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } private DatabaseHelper(Context context,int version){ super(context,DB_NAME,null,version); } public static DatabaseHelper getDatabaseHelper(){ return instance; } @Override public void onCreate(SQLiteDatabase db) { //建立使用者表 db.execSQL("create table if not exists user_table (id integer primary key autoincrement,name varchar(32) not null)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //這裡對錶進行修改 //String sql1 = "DROP TABLE IF EXISTS user_table;"; String sql7 = "ALTER TABLE user_table ADD COLUMN phone_number varchar(15); db.execSQL(sql7); //onCreate(db); } </pre>
相關文章
- android資料庫如何進行版本升級?架構之資料庫框架升級Android資料庫架構框架
- 2 Day DBA-管理方案物件-管理Oracle資料庫軟體-升級資料庫-DBUA支援的資料庫版本物件Oracle資料庫
- 升級到資料庫到10.2.0.5.0版本資料庫
- rac 升級crs 升級資料庫軟體,升級資料庫資料庫
- Android版本升級同時Sqlite資料庫的升級及之前資料的保留AndroidSQLite資料庫
- 資料庫升級資料庫
- ♀♀資料庫升級♀♀資料庫
- iOS CoreData (二) 版本升級和資料庫遷移iOS資料庫
- 資料庫版本升級(upgrade 9.2.0.1 to11.2.0.3)資料庫
- 2 Day DBA-管理方案物件-管理Oracle資料庫軟體-升級資料庫物件Oracle資料庫
- Oracle 資料庫升級Oracle資料庫
- 資料庫升級之-Dataguard滾動升級資料庫
- 資料庫升級之-資料泵資料庫
- 資料庫升級和工具資料庫
- 資料庫升級之-XTTS資料庫TTS
- 資料庫升級報錯資料庫
- 2 Day DBA-管理方案物件-管理Oracle資料庫軟體-升級資料庫-啟動DBUA物件Oracle資料庫
- 使用檔案複製的方式進行資料庫版本升級資料庫
- oracle資料庫升級11.2.0.3升級到11.2.0.4Oracle資料庫
- 靜默方式安裝、升級oracle(三): 升級資料庫軟體及資料庫Oracle資料庫
- Grafana的版本升級和資料遷移Grafana
- Oracle資料庫升級(轉發)Oracle資料庫
- Oracle 資料庫 升級為 RACOracle資料庫
- 雲圖說|雲資料庫MySQL核心小版本升級全攻略資料庫MySql
- 動手為王 | Oracle 資料庫跨版本升級遷移實踐Oracle資料庫
- 使用Flyway來管理資料庫版本資料庫
- Oracle資料庫升級與補丁Oracle資料庫
- 資料庫升級後‘PLAN_TABLE資料庫
- Oracle 資料庫升級注意事項Oracle資料庫
- 資料庫的升級及遷移資料庫
- RAC資料庫升級到10.2.0.5資料庫
- 谷歌升級雲端資料庫Cloud SQL谷歌資料庫CloudSQL
- 資料庫升級-物理重新整理資料字典資料庫
- iOS 資料庫升級資料遷移解決方案iOS資料庫
- 探索Oracle之資料庫升級一 升級補丁修復概述Oracle資料庫
- RAC 資料庫升級 10.2.0.1.0 到 10.2.0.2.0 之升級catalog資料庫
- node 版本升級
- gcc版本升級GC