Android資料庫公升級且表新增新列

2021-08-03 17:35:13 字數 1626 閱讀 7579

今天突然想到我們

android

版本公升級的時候經常會遇到公升級版本的時候在新版本中

資料庫可能會修改,今天我們就以資料庫公升級且表新增新列為例子寫乙個

測試程式。

首先在要建立乙個資料庫,一般我們先建立乙個dbhelper,繼承sqliteopenhelper,建構函式我們使用傳遞版本號的:

public dbhelper(context context, string name, int version)
我們在activity中初始化dbhelper傳入當前應用的版本號,

try  catch (exception e) 

mydbhelper = new dbhelper(this,dbhelper.db_name

,ver);

db= mydbhelper.getwritabledatabase();

我們通過檢視sqliteopenhelpe原始碼知道,當我們呼叫

getwritabledatabase()
時,會呼叫

getdatabaselocked(boolean writable)
方法,往下面看可以看到當版本號大於當前的時候會呼叫onupgrade方法,我們可以在這裡做公升級資料庫操作:

final int version = db.getversion();

if (version != mnewversion)

db.begintransaction();

try else else

}db.setversion(mnewversion);

db.settransactionsuccessful();

} finally

因此我在onupgrade方法中做了表新增新列操作如下:

@override  

public void

onupgrade(sqlitedatabase db, int oldversion, int newversion)

}

這樣執行完之後就會多一列talknumber,

select * from sqlite_master where type="table" and name="local_picc_talk";

table|local_picc_talk|local_picc_talk|9|create table local_picc_talk (id integer

primary key autoincrement,case_no varchar(60),user_no varchar(60),user_name var

char(60),car_no varchar(60),task_work_id varchar(60),talk_content varchar(1000),

time varchar(60),with_talk_no varchar(60),with_talk_name varchar(60), talknumber

varchar(20), unique (id))

sqlite> select * from local_picc_talk;

這樣就完成了版本公升級的時候資料庫公升級,並且為表新增新的一列。

demo**在:

android 資料庫 公升級設計

很久以前設計的資料庫建立與公升級的方法,此設計避免了公升級的時候需要多處修改的弊端。如下 public class dbadatper 資料庫名 private static final string database name test 建表語句 此部分只是使用者第一次安裝的時候會在oncreat...

Android中資料庫公升級說明

1.幫助文件裡說的 資料庫公升級 是指什麼?你開發了乙個程式,當前是1.0版本。該程式用到了資料庫。到1.1版本時,你在資料庫的某個表中增加了乙個字段。那麼軟體1.0版本用的資料庫在軟體1.1版本就要被公升級了。2.資料庫公升級應該注意什麼?軟體的1.0版本公升級到1.1版本時,老的資料不能丟。那麼...

Android中資料庫公升級說明

1.幫助文件裡說的 資料庫公升級 是指什麼?你開發了乙個程式,當前是1.0版本。該程式用到了資料庫。到1.1版本時,你在資料庫的某個表中增加了乙個字段。那麼軟體1.0版本用的資料庫在軟體1.1版本就要被公升級了。2.資料庫公升級應該注意什麼?軟體的1.0版本公升級到1.1版本時,老的資料不能丟。那麼...