全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android开发中数据库升级且表添加新列的方法

本文实例讲述了Android开发中数据库升级且表添加新列的方法。分享给大家供大家参考,具体如下:

今天突然想到我们android版本升级的时候经常会遇到升级版本的时候在新版本中数据库可能会修改,今天我们就以数据库升级且表添加新列为例子写一个测试程序。

首先在要创建一个数据库,一般我们先创建一个DbHelper,继承SQLiteOpenHelper,构造函数我们使用传递版本号的:

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

我们在Activity中初始化DbHelper传入当前应用的版本号,

try {
  ver=getVersionName(getApplicationContext());
} catch (Exception e) {
  e.printStackTrace();
}
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) {
  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);");
  }
}

这样执行完之后就会多一列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代码在:https://github.com/xxnan/DataBaseUpdateTest

或者点击此处本站下载

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android数据库操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # 数据库  # 升级  #   # 添加新列  # Android开发使用json实现服务器与客户端数据的交互功能示例  # Android App端与PHP Web端的简单数据交互实现示例  # Android登录注册功能 数据库SQLite验证  # Android数据库操作工具类分享  # Android SQLite数据库版本升级的管理实现  # Android数据传输中的参数加密代码示例  # 创建一个  # 进阶  # 操作技巧  # 就会  # 在这里  # 我在  # 相关内容  # 感兴趣  # 我们可以  # 给大家  # 可以看到  # 点击此处  # 当我们  # 往下  # 更多关于  # 就以  # 经常会  # 所述  # 新版本  # 程序设计 


相关文章: 建站主机选择指南:服务器配置与SEO优化实战技巧  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  安云自助建站系统如何快速提升SEO排名?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  jQuery 常见小例汇总  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  一键网站制作软件,义乌购一件代发流程?  如何快速上传自定义模板至建站之星?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  高端云建站费用究竟需要多少预算?  制作网站的模板软件,网站怎么建设?  建站主机空间推荐 高性价比配置与快速部署方案解析  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何高效完成独享虚拟主机建站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  建站之星代理平台如何选择最佳方案?  装修招标网站设计制作流程,装修招标流程?  高性价比服务器租赁——企业级配置与24小时运维服务  如何在企业微信快速生成手机电脑官网?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  山东网站制作公司有哪些,山东大源集团官网?  江苏网站制作公司有哪些,江苏书法考级官方网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  实例解析Array和String方法  ,网站推广常用方法?  高端建站如何打造兼具美学与转化的品牌官网?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  建站之星×万网:智能建站系统+自助建站平台一键生成  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  无锡营销型网站制作公司,无锡网选车牌流程?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何用VPS主机快速搭建个人网站?  Python路径拼接规范_跨平台处理说明【指导】  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  建站之星2.7模板快速切换与批量管理功能操作指南  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  *服务器网站为何频现安全漏洞?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  怀化网站制作公司,怀化新生儿上户网上办理流程?  网站制作难吗安全吗,做一个网站需要多久时间?  高防服务器租用指南:配置选择与快速部署攻略  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  如何在宝塔面板中修改默认建站目录?  建站之星各版本价格是多少?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。