Android開發(fā)中數(shù)據(jù)庫升級且表添加新列的方法
本文實例講述了Android開發(fā)中數(shù)據(jù)庫升級且表添加新列的方法。分享給大家供大家參考,具體如下:
今天突然想到我們android版本升級的時候經(jīng)常會遇到升級版本的時候在新版本中數(shù)據(jù)庫可能會修改,今天我們就以數(shù)據(jù)庫升級且表添加新列為例子寫一個測試程序。
首先在要創(chuàng)建一個數(shù)據(jù)庫,一般我們先創(chuàng)建一個DbHelper,繼承SQLiteOpenHelper,構(gòu)造函數(shù)我們使用傳遞版本號的:
public DbHelper(Context context, String name, int version){
this(context, name, null, version);
}
我們在Activity中初始化DbHelper傳入當(dāng)前應(yīng)用的版本號,
try {
ver=getVersionName(getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
myDbHelper = new DbHelper(this,DbHelper.DB_NAME,ver);
db= myDbHelper.getWritableDatabase();
我們通過查看SQLiteOpenHelpe源碼知道,當(dāng)我們調(diào)用
getWritableDatabase()
時,會調(diào)用
getDatabaseLocked(boolean writable)
方法,往下面看可以看到當(dāng)版本號大于當(dāng)前的時候會調(diào)用onUpgrade方法,我們可以在這里做升級數(shù)據(jù)庫操作:
final int version = db.getVersion();
if (version != mNewVersion) {
if (db.isReadOnly()) {
throw new SQLiteException("Can't upgrade read-only database from version " +
db.getVersion() + " to " + mNewVersion + ": " + mName);
}
db.beginTransaction();
try {
if (version == 0) {
onCreate(db);
} else {
if (version > mNewVersion) {
onDowngrade(db, version, mNewVersion);
} else {
onUpgrade(db, version, mNewVersion);
}
}
db.setVersion(mNewVersion);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
因此我在onUpgrade方法中做了表添加新列操作如下:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(newVersion>oldVersion)
{
db.execSQL("ALTER TABLE local_picc_talk ADD talknumber varchar(20);");
}
}
這樣執(zhí)行完之后就會多一列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;
這樣就完成了版本升級的時候數(shù)據(jù)庫升級,并且為表添加新的一列。
DEMO代碼在:https://github.com/xxnan/DataBaseUpdateTest
或者點擊此處本站下載。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android9.0 SystemUI 網(wǎng)絡(luò)信號欄定制修改的流程解析
這篇文章主要介紹了Android9.0 SystemUI 網(wǎng)絡(luò)信號欄定制修改的流程,本文通過圖文實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
android圖片類型之間相互轉(zhuǎn)換實現(xiàn)代碼
這篇文章主要介紹了android圖片類型之間相互轉(zhuǎn)換的方法,涉及Android實現(xiàn)各種常用圖片類型及字節(jié)類型的轉(zhuǎn)換技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
Android中ViewPager實現(xiàn)滑動條及與Fragment結(jié)合的實例教程
ViewPager類主要被用來實現(xiàn)可滑動的視圖功能,這里我們就來共同學(xué)習(xí)Android中ViewPager實現(xiàn)滑動條及與Fragment結(jié)合的實例教程,需要的朋友可以參考下2016-06-06
Android ScrollView只能添加一個子控件問題解決方法
這篇文章主要介紹了Android ScrollView只能添加一個子控件問題解決方法,涉及Android界面布局的相關(guān)技巧,需要的朋友可以參考下2016-02-02
Android自定義TitleView標(biāo)題開發(fā)實例
這篇文章主要介紹了Android自定義TitleView標(biāo)題開發(fā)實例的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
Android ScrollView的頂部下拉和底部上拉回彈效果
本篇文章主要介紹了Android ScrollView的頂部下拉和底部上拉回彈效果,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05

