欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)中數(shù)據(jù)庫升級且表添加新列的方法

 更新時間:2017年09月28日 12:05:18   作者:xxnan  
這篇文章主要介紹了Android開發(fā)中數(shù)據(jù)庫升級且表添加新列的方法,結(jié)合具體實(shí)例形式分析了Android數(shù)據(jù)庫升級開發(fā)過程中常見問題與相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了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

或者點(diǎn)擊此處本站下載。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 深入淺析Android Fragment(下篇)

    深入淺析Android Fragment(下篇)

    本篇文章給大家介紹如何管理Fragment回退棧,F(xiàn)ragment如何與Activity交互,F(xiàn)ragment與Activity交互的最佳實(shí)踐,沒有視圖的Fragment的用處,使用Fragment創(chuàng)建對話框,如何與ActionBar,MenuItem集成,對Android Fragment感興趣的朋友可以參考下本篇文章
    2015-10-10
  • Android開發(fā)實(shí)現(xiàn)Gallery畫廊效果的方法

    Android開發(fā)實(shí)現(xiàn)Gallery畫廊效果的方法

    這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)Gallery畫廊效果的方法,結(jié)合具體實(shí)例形式分析了Android使用Gallery實(shí)現(xiàn)畫廊功能的具體操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-06-06
  • Android WebView 內(nèi)處理302重定向不跳轉(zhuǎn)的解決

    Android WebView 內(nèi)處理302重定向不跳轉(zhuǎn)的解決

    這篇文章主要介紹了Android WebView 內(nèi)處理302重定向不跳轉(zhuǎn)的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android 數(shù)據(jù)存儲方式有哪幾種

    Android 數(shù)據(jù)存儲方式有哪幾種

    android為數(shù)據(jù)存儲提供了五種方式,有SharedPreferences、文件存儲、SQLite數(shù)據(jù)庫、ContentProvider、網(wǎng)絡(luò)存儲,對android數(shù)據(jù)存儲方式感興趣的朋友可以通過本文學(xué)習(xí)一下
    2015-11-11
  • Android Walker登錄記住密碼頁面功能實(shí)現(xiàn)

    Android Walker登錄記住密碼頁面功能實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Android Walker登錄記住密碼頁面功能的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • android使用service和activity獲取屏幕尺寸的方法

    android使用service和activity獲取屏幕尺寸的方法

    這篇文章主要介紹了android使用service和activity獲取屏幕尺寸的方法,實(shí)例分析了基于service和activity兩種方法獲取屏幕尺寸的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下
    2015-08-08
  • Android圖像處理之霓虹濾鏡效果

    Android圖像處理之霓虹濾鏡效果

    這篇文章主要介紹了Android圖像處理之霓虹濾鏡效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android 管理Activity中的fragments

    Android 管理Activity中的fragments

    為了管理Activity中的fragments,需要使用FragmentManager,為了得到它,需要調(diào)用Activity中的getFragmentManager()方法,接下來詳細(xì)介紹,感興趣的朋友可以了解下哦
    2013-01-01
  • Android kotlin+協(xié)程+Room數(shù)據(jù)庫的簡單使用

    Android kotlin+協(xié)程+Room數(shù)據(jù)庫的簡單使用

    這篇文章主要介紹了Android kotlin+協(xié)程+Room數(shù)據(jù)庫的簡單使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Android自定義Button并設(shè)置不同背景圖片的方法

    Android自定義Button并設(shè)置不同背景圖片的方法

    這篇文章主要介紹了Android自定義Button并設(shè)置不同背景圖片的方法,涉及Android自定義控件的功能實(shí)現(xiàn)與布局相關(guān)技巧,需要的朋友可以參考下
    2016-01-01

最新評論