Android -- 面试 -- 数据库升级策略】的更多相关文章

升级:重写onUpgrade方法 确定 相邻版本 的差别,从版本1开始依次迭代更新,先执行v1到v2,再v2到v3…… 为 每个版本 确定与现在数据库的差别,为每个case撰写专门的升级代码. 降级 onDowngrade()数据库降级:比如从数据库4降级到数据库3必须重写该方法. @Override public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { super.onDowngrade(db,…
SQLiteOpenHelper // 如果数据库文件不存在,只有onCreate()被调用(该方法在创建数据库时被调用一次) public abstract void onCreate(SQLiteDatabase db); // 如果数据库文件存在,会调用onUpgrade()方法升级数据库,并更新版本号. public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion); OnCreate : 如…
借用API文档解释: public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 当数据库需要升级时,会调用这个方法.应该使用这个方法来实现删除表.添加表或者做一些需要升级新的策略版本的事情. SQLite ALTER TABLE的文档可以在以下网址中找到: http://sqlite.org/lang_altertable.html 如果要给表添加一个新列,那么使用使用ALTER TABLE…
一.概述 SQLite是Android内置的一个很小的关系型数据库.SQLiteOpenHelper是一个用来辅助管理数据库创建和版本升级问题的抽象类.我们可以继承这个抽象类,实现它的一些方法来对数据库进行自定义操作.下面两个方法必须重写: public void onCreate(SQLiteDatabase db) public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) SQLiteOpenHelper…
Android Sqlite数据库升级,在Android APP开发之中,非常常见: 在确定原来的数据库版本号之后,在原来数据库版本号+1,就会执行onUpgrade方法,进行数据库升级操作: 在onUpgrade方法中,执行alter table student_table add age integer null 语句: package com.liudeli.day2.sqlite.db; import android.content.Context; import android.dat…
以下内容可以作为面试官在面试的时候的问题,感觉比较好,是比较常用的知识点,可以用来考察基础是否扎实. 也可以程序猿学习.开发中的注意点.因为稍微不注意,就有可能导致数据库不能用. DBAdapter.java是一个简单的类,主要用来进行数据库操作. package com.example.test_20131218; import android.content.Context; import android.database.sqlite.SQLiteDatabase; public clas…
转自:http://blog.csdn.net/leehong2005/article/details/9128501 请考虑如下情况: 在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如V1.0的表A有10个column,而在V1.1的表A有12个colum,在升级时,表A增加了两列,此时我们应该怎么做呢. 总体思路 1,将表A重命名,改了A_temp. 2,创建新表A. 3,将表A_temp的数据插入到表A. 下面代码列出了更新表的实现,upgradeTables,给…
一.数据库升级: 在我们的程序中,或多或少都会涉及到数据库,使用数据库必定会涉及到数据库的升级,数据库升级带来的一些问题,如旧版本数据库的数据记录的保持,对新表的字段的添加等等一系列问题,还记得当我来西安的时候,面试的第二家公司,做音乐播放客户端的,就问到了这个问题; 我们开发了一个程序,当前是1.0版本.该程序用到了数据库.到1.1版本时,在数据库的某个表中增加了一个字段.那么软件1.0版本用的数据库在软件1.1版本就要被升级了.软件的1.0版本升级到1.1版本时,老的数据不能丢.那么在1.1…
随着Android应用版本的迭代,经常遇到数据库表结构发生改变,或者一些指定的表数据需要更新.这也就引出一个问题Android数据库的更新问题. Android数据库升级分类 Android数据库更新大致情况可分为以下两种类型: 第一版APP版本号:appVersion = 1.0 第二版APP版本号:appNewVersion = 2.0 1. 用户A,使用了appVersion ,并在自动更新的基础上,升级到appNewVersion: 2. 用户B,没有使用过appVersion,而是直接…
原始完成于:2015-04-27 19:28:22 提供一种思路,优雅的处理Android数据库升级的问题,直接上代码: 1 package com.example.databaseissuetest; 2 3 import android.content.Context; 4 import android.database.sqlite.SQLiteDatabase; 5 import android.database.sqlite.SQLiteOpenHelper; 6 import and…
数据库版本升级对软件的管理操作. 我们手机经常会收到xxx软件升级什么的提醒,你的软件版本更新,同时你的数据库对应的版本也要相应的更新. 数据库版本更新需要主要的问题: 软件的1.0版本升级到1.1版本时,老的数据不能丢. 那么在1.1版本的程序中就要有地方能够检测出来新的软件版本与老的数据库不兼容,并且能够有办法把1.0软件的数据库升级到1.1软件能够使用的数据库. 换句话说,要在1.0软件的数据库的那个表中增加那个字段,并赋予这个字段默认值. 当然有的时候我们对更新后的 版本并没有什么好感,…
在Android开发中,sqlite至关重要,增删查改不多说,难点在于,1,并发,多个线程同时操作数据库.2,版本升级时,如果数据库表中新加了个字段,如何在不删除表的情况下顺利过渡,从而不丢失数据. 数据库操作建议用ORM框架,简单高效.这里推荐xUtils,里面包含DBUtils.github地址:https://github.com/wyouflf/xUtils.关于DBUtils,它是这样介绍的: android中的orm框架,一行代码就可以进行增删改查: 支持事务,默认关闭: 可通过注解…
第一部分 Andoird的SQLiteOpenHelper类中有一个onUpgrade方法.帮助文档中只是说当数据库升级时该方法被触发.经过实践,解决了我一连串的疑问: 1. 帮助文档里说的“数据库升级”是指什么? 你开发了一个程序,当前是1.0版本.该程序用到了数据库.到1.1版本时,你在数据库的某个表中增加了一个字段.那么软件1.0版本用的数据库在软件1.1版本就要被升级了. 2. 数据库升级应该注意什么? 软件的1.0版本升级到1.1版本时,老的数据不能丢.那么在1.1版本的程序中就要有地…
public class SqliteHelp extends SQLiteOpenHelper { /* * context:创建数据库所需的 上下文对象 * name: 数据库名字 * factory 游标 查询的时候使用 * version 指定数据库的版本高版本会自动更新 低版本的(自定义调用 铺面ongrade) * */ public SqliteHelp(Context context, String name, CursorFactory factory, int version…
前言 又到了金三银四的面试季,自己也不得不参与到这场战役中来,其实是从去年底就开始看,android的好机会确实不太多,但也还好,3年+的android开发经历还是有一些面试机会的,不过确实不像几年前门槛那么低了,总的体会就是小的创业公司比较注重你的项目经历是否和自己的贴合,直接能过来独当一面.大厂除了看中项目经历外,还比较注重你知识面的广度,是广度.深度和解决方案等多方面的考察,平时够工作要好好积累临时刷题只聊点皮毛估计是过不了关的. 下面就总结一些遇到的题目,各种风格的都有.这里先列举问题.…
转自:http://blog.csdn.net/wwj_748/article/details/8868640 Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念. 2.sim卡的EF文件有何作用 sim卡的文件系统有自己规范,主要是为了和…
Android Realm数据库使用指南 Realm数据库, 目前有Java, Objective‑C, React Native, Swift, Xamarin的几种实现, 是一套用来取代SQLite的解决方案. 本文面向Android开发, 所以只讨论Java实现. 目前Realm Java的最新版本是2.3.1. 官方文档在此: realm java doc, 花一个下午就可以基本过一遍, 之后随时查用. 我写了一个小程序TodoRealm, 使用Realm做数据库实现的一个To-do应用…
1. 请描述下Activity的声明周期. onCreate->onStart->onRemuse->onPause->onStop->onRestart->onDestroy 2. 如果后台的Activity由于某种原因被系统回收,如何在回收之前保存当前状态.onSaveInstanceState().程序中的某一个Activity A 在运行时,主动或被动的运行另一个新的Activity B,这个时候A会执行onSaveInstanceState().B完成以后又回…
金九银十跳槽季接近尾声了,可是今年由于疫情的影响仍然不太好找工作,相信大家肯定急需一套Android面试宝典,下面就分享给大家我珍藏已久的Android高阶面试宝典,供大家学习 ! 1.自定义Handler时如何避免内存泄漏 答案: 一般非静态内部类持有外部类的引用的情况下,造成外部类在使用完成后不能被系统回收内存,从而造成内存泄漏.为了避免这个问题,我们可以自定义的Handler声明为静态内部类形式,然后通过弱引用的方式,让Handler持有外部类的引用,从而可避免内存泄漏问题. 以下是代码实…
Andoird的SQLiteOpenHelper类中有一个onUpgrade方法. 1. 帮助文档里说的"数据库升级"是指什么? 你开发了一个应用,当前是1.0版本.该程序用到了数据库.到1.1版本时,你在数据库的某个表中增加了一个字段.那么软件1.0版本用的数据库在软件1.1版本就要被升级了(当然这里的升级包括两个概念,一个是应用升级还有就是数据库升级). 2. 数据库升级应该注意什么? 软件的1.0版本升级到1.1版本时,数据库中老的数据不能丢.那么在1.1版本的应用中就要有地方能…
1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存 C. 内存回收程序允许程序员直接释放内存 D. 内存回收程序可以在指定的时间释放内存对象 2. 下面异常是属于Runtime Exception 的是(abcd)(多选) A.ArithmeticException B.IllegalArgumentException C.NullPointerException D.BufferUnderflowException…
  Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承自SqliteOpenHelper 2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,google文档对两个回调方法的解释是创建数据库的时候调用与更新数据库的版本的时候调用 3.Sqlite数据库主要是用来缓存应用的数据,而应用却是一直在更新版本,相应的数据…
===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeandroid.com/thread-177885-1-1.html2.华为关于android笔试题案例解析下载地址 http://www.eoeandroid.com/thread-179233-1-1.html3.android面试经历下载地址:http://www.eoeandroid.com/th…
6.5.1    使用事务 前面我们已经知道,SQLite 数据库是支持事务的,事务的特性可以保证让某一系列的操 作要么全部完成,要么一个都不会完成.那么在什么情况下才需要使用事务呢?想象以下场 景,比如你正在进行一次转账操作,银行会将转账的金额先从你的账户中扣除,然后再向收 款方的账户中添加等量的金额.看上去好像没什么问题吧?可是,如果当你账户中的金额刚 刚被扣除,这时由于一些异常原因导致对方收款失败,这一部分钱就凭空消失了!当然银行 肯定已经充分考虑到了这种情况,它会保证扣钱和收款的操作要么…
Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小. 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的"安装". 3.隔离性 SQLite 数据库中所有的信息(比如表.视图.触发器等)都包含在一个文件夹内,方便管理和维护. 4.跨平台 SQLite 目前…
Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下. 一.软件v1.0 安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHelper的onCreate,不走onUpgrade. 1.v1.0(直接安装v1.0) 二.软件v2.0 有2种安装软件情况: 1.v1.0   -->  v2.0              不走onCreate,走onUpgrade 2.v2.0(直接安装v2.0)          走onCrea…
Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软件时创建出应用使用到的数据库表结构及添加一些初始化记录,另外在软件升级的时候,也需要对数据表结构进行更新.那么,我们如何才能实现在用户初次使用或升级软件时自动在用户的手机上创建出应用需要的数据库表呢?总不能让我们在每个需要安装此软件的手机上通过手工方式创建数据库表吧?因为这种需求是每个数据库应用都…
用过ActiveAndroid.玩过ORMLite,穿过千山万水,最终还是发现greenDAO好用,ActiveAndroid我之前有一篇文章介绍过 玩转Android之数据库框架ActiveAndroid的使用,如果小伙伴们有兴趣可以去查看,ActiveAndroid目前存在的问题是没有更新了,GitHub上ActiveAndroid的更新都是两年前的事了.所以我们还是来看看这个目前非常活跃的数据库框架greenDAO,greenDAO在升级到3.0之后使用方式也变得更加简单了,上手更加容易了…
ActiveAndroid是一个开源的数据库框架,使我们在Android中使用数据库变得更为简单,今天我们就来看看这个数据库框架的使用. 1.引入ActiveAndroid 首先创建我们自己的项目,在我们的项目中引入ActiveAndroid,引入ActiveAndroid需要我们修改两个地方,一个全局gradle文件,还有一个是局部gradle文件,修改方式如下: 全局gradle文件,在jcenter()下方添加如下代码: mavenCentral() maven { url "https:…
Android中数据库的操作方法: 1.Android平台提供了一个数据库辅助类来创建或打开数据库. 这个辅助类继承自SQLiteOpenHelper类.继承和扩展SQLiteOpenHelper类主要做的工作就是重写下面两个方法. (1).onCreate(SQLiteDatabase db) : A.当数据库被首次创建时(用户初次使用软件时)运行该方法.一旦数据库存在就不会调用该方法了. B.只生成辅助类(继承SQLiteOpenHelper类)对象的时候是不会调用该函数的,唯独当调用辅助类…