Android 資料庫升級

來源:互聯網
上載者:User

標籤:_id   exist   第一個   arc   contex   .exe   oid   class   ima   

資料庫升級:v1.0-v2.1
從v1.0升級到v2.01,不走oncreate,走onupdategrade
直接安裝v2.0,走onCreate;

v1.0-v3.0:分三種情況
1.v1.0升級到v3.0: 不走onCreate,走onUpgrade
2.v2.0升級到v3.0:不走onCreate,走onUpgrade
3.直接安裝v3.0:走onCreate,不走onUpgrade
public class DbHelper extends SQLiteOpenHelper { // private static final int DATABASE_VERSION = 1000; private static final int DATABASE_VERSION = 1001; //private static final int DATABASE_VERSION = 1002; private static final String DATABASE_NAME = "mall.db"; private static DbHelper instance = null; /*操作資料庫有兩個非常重要的類:SQLiteDatabase和SQLiteOpenHelper * 1.SQLiteDatabase的執行個體便代表了SQLite資料庫,通過SQLiteDatabase的一些常用方法,可以執行SQL語句, * 對資料庫進行添加、刪除、更新、尋找和修改等操作
     * 2.SQLiteOpenHelper是一個輔助類,主要負責建立和開啟資料庫以及對資料庫的版本進行管理。     * SQLiteOpenHelper是一個抽象類別,需要繼承它並實現它的幾個回呼函數     * */   /*    1.寫內部類 繼承SQLiteOpenHelper    2.產生實現方法      (1)建立  public void onCreate(SQLiteDatabase db) {      (2)升級  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    3.產生器 調用父類的構造方法     public DBHelper(String name, int version) {    4.點擊事件 調用構造方法DBHelper 建立 串連資料庫*/    //內部類繼承  需要自己產生構造器    public DbHelper(Context context) {        super(context, DATABASE_NAME, null, DATABASE_VERSION);    }    //建立對象(單例模式)    public synchronized DbHelper getInstance(Context context) {        if (instance == null) {            instance = new DbHelper(context);        }        return instance;    }    //建表    @Override    public void onCreate(SQLiteDatabase sqLiteDatabase) {        sqLiteDatabase.execSQL(SQL.CREATE_TABLE_fAVORATE);        // 若不是第一個版本安裝,直接執行資料庫升級        // 請不要修改FIRST_DATABASE_VERSION的值,其為第一個資料庫版本大小        final int FIRST_DATABASE_VERSION = 1000;        onUpgrade(sqLiteDatabase, FIRST_DATABASE_VERSION, DATABASE_VERSION);    }    @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {        // 使用for實現跨版本升級資料庫        for (int i = oldVersion; i < newVersion; i++) {            switch (i) {                case 1000:                    //從v1.0升級到v1.1                    upgradeToVersion1001(sqLiteDatabase);                    break;                case 1001:                    //從v1.1升級到v1.2                    upgradeToVersion1002(sqLiteDatabase);                    break;                default:                    break;            }        }    }    private void upgradeToVersion1001(SQLiteDatabase db) {        // favorite表新增1個欄位        String sql1 = "ALTER TABLE " + SQL.T_FAVORITE + " ADD COLUMN deleted VARCHAR";        db.execSQL(sql1);    }    private void upgradeToVersion1002(SQLiteDatabase db) {        // favorite表新增2個欄位,添加新欄位只能一個欄位一個欄位加,sqlite有限制不予許一條語句加多個欄位        String sql1 = "ALTER TABLE " + SQL.T_FAVORITE + " ADD COLUMN message VARCHAR";        String sql2 = "ALTER TABLE " + SQL.T_FAVORITE + " ADD COLUMN type VARCHAR";        db.execSQL(sql1);        db.execSQL(sql2);    }}

//建立資料庫(建表)
public class SQL {    public static final String T_FAVORITE = "favorite";    public static final String CREATE_TABLE_fAVORATE="create table T_FAVORITE if not exists" +            "(_id integer primary key autoincrement," +            "title varchar,url varchar," +            "creataDate varchar)";}

 

 

 

Android 資料庫升級

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.