歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android SQLiteDatabase中版本控制作用詳解

Android SQLiteDatabase中版本控制作用詳解

日期:2017/3/1 10:47:39   编辑:Linux編程

Android 一說到數據庫,就要想到sqlite,想到sqlite就要想到SQLiteDatabase和SQLiteOpenHelper

在Android系統,為我們提供了一個名為SQLiteOpenHelper的類,該類用於對數據庫版本進行管理,該類是一個抽象類,有兩個重要方法

分別是 onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

publicSQLiteOpenHelper(Context context,Stringname,SQLiteDatabase.CursorFactoryfactory, int version)

super(context, DB_NAME,null, DB_VERSION);
關於數據庫的版本,開始設置為1.
當調用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法獲取用於操作數據庫的SQLiteDatabase實例的時候,如果數據庫不存在,Android系統會自動生成一個數據庫,接著調用onCreate()方法,onCreate()方法在初次生成數據庫時才會被調用,在onCreate()方法裡可以生成數據庫表結構及添加一些應用使用到的初始化數據。 onUpgrade()方法在數據庫的版本發生變化時會被調用,數據庫的版本是由程序員控制的,假設數據庫現在的版本是1,由於業務的需要,修改了數據庫表的結構,這時候就需要升級軟件,升級軟件時希望更新用戶手機裡的數據庫表結構,為了實現這一目的,可以把原來的數據庫版本設置為2(或其他數值),並且在onUpgrade()方法裡面實現表結構的更新。當軟件的版本升級次數比較多,這時在onUpgrade()方法裡面可以根據原版號和目標版本號進行判斷,然後作出相應的表結構及數據更新。

getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用於操作數據庫的 SQLiteDatabase實例。但getWritableDatabase() 方法以讀寫方式打開數據庫,一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫,倘若使用的是getWritableDatabase() 方法就會出錯。getReadableDatabase()方法先以讀寫方式打開數據庫,如果數據庫的磁盤空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開數據庫,對於熟悉SQL語法的程序員而言,直接使用execSQL()和rawQuery()方法執行 SQL語句就能完成數據的添加、刪除、更新、查詢操作。

Copyright © Linux教程網 All Rights Reserved