最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

本文實(shí)例講述了Android開(kāi)發(fā)中數(shù)據(jù)庫(kù)升級(jí)且表添加新列的方法。分享給大家供大家參考,具體如下:

今天突然想到我們android版本升級(jí)的時(shí)候經(jīng)常會(huì)遇到升級(jí)版本的時(shí)候在新版本中數(shù)據(jù)庫(kù)可能會(huì)修改,今天我們就以數(shù)據(jù)庫(kù)升級(jí)且表添加新列為例子寫一個(gè)測(cè)試程序。

首先在要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù),一般我們先創(chuàng)建一個(gè)DbHelper,繼承SQLiteOpenHelper,構(gòu)造函數(shù)我們使用傳遞版本號(hào)的:

public DbHelper(Context context, String name, int version){
  this(context, name, null, version);
}

我們?cè)贏ctivity中初始化DbHelper傳入當(dāng)前應(yīng)用的版本號(hào),

try {
  ver=getVersionName(getApplicationContext());
} catch (Exception e) {
  e.printStackTrace();
}
myDbHelper = new DbHelper(this,DbHelper.DB_NAME,ver);
db= myDbHelper.getWritableDatabase();

我們通過(guò)查看SQLiteOpenHelpe源碼知道,當(dāng)我們調(diào)用

getWritableDatabase()

時(shí),會(huì)調(diào)用

getDatabaseLocked(boolean writable)

方法,往下面看可以看到當(dāng)版本號(hào)大于當(dāng)前的時(shí)候會(huì)調(diào)用onUpgrade方法,我們可以在這里做升級(jí)數(shù)據(jù)庫(kù)操作:

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í)行完之后就會(huì)多一列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;

這樣就完成了版本升級(jí)的時(shí)候數(shù)據(jù)庫(kù)升級(jí),并且為表添加新的一列。

DEMO代碼在:https://github.com/xxnan/DataBaseUpdateTest

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

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

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

相關(guān)文章

最新評(píng)論

潼南县| 雷波县| 会东县| 东乡| 阜城县| 泰兴市| 墨竹工卡县| 武威市| 呼伦贝尔市| 九龙坡区| 西盟| 镇远县| 南陵县| 周口市| 邢台县| 台山市| 宁波市| 合山市| 东乡族自治县| 东兰县| 肥东县| 富锦市| 临城县| 安陆市| 荃湾区| 永康市| 余庆县| 呼伦贝尔市| 且末县| 宣汉县| 阳高县| 连平县| 铜陵市| 光山县| 奉新县| 仁化县| 巍山| 长葛市| 会昌县| 来宾市| 山东省|