Android-Sqlite-升级操作
一想到Android到数据库,只需要想到一个类 SQLiteOpenHelper,然后写一个类继承 SQLiteOpenHelper,重写构造方法,对数据库进行配置
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
}
SqliteDatabase数据库,所写的所有SQL语句都是通过系统sqlite.c文件执行成数据库文件的,SQlite数据库是关系型数据库,轻量级,体积小等特点
Android中的数据库升级,什么时候需要数据库升级?
答:例如:当发布上线的APP,已有用户在使用此APP,而这个APP的某张表只有name,age,现在还缺少一个字段,就需要数据库是增加表字段 同时保证其他数据不受影响。
在以前的数据库版本号上+1就能执行 onUpgrade 方法
private static final int VERSION = 2;
增加表字段,新增加的表字段 要允许为空
db.execSQL("alter table "+TABLE_NAME+" add sex text null");
package liudeli.datastorage.db; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class MySQLiteOpenHelper extends SQLiteOpenHelper { public static MySQLiteOpenHelper mySQLiteOpenHelper; /**
* 由于表名每次使用很频繁,所有定义成常量
*/
public static final String TABLE_NAME = "student_table"; private static final String DB_NAME = "person_info.db";
private static final int VERSION = 2; public synchronized static MySQLiteOpenHelper getInstance(Context context) {
if (null == mySQLiteOpenHelper) {
mySQLiteOpenHelper = new MySQLiteOpenHelper(context, DB_NAME, null, VERSION);
}
return mySQLiteOpenHelper;
} /**
* 当开发者调用 getReadableDatabase(); 或者 getWritableDatabase();
* 就会通过此构造方法配置的信息 来创建 person_info.db 数据库
* 此方法的另外作用是,如果存着数据库就打开数据库,不存着数据库就创建数据库
* @param context 上下文
* @param name 数据库名
* @param factory 游标工厂
* @param version 版本,最低为1
*/
private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
} /**
* 此方法是何时调用? ,是需要开发者调用 getReadableDatabase(); 或者 getWritableDatabase();
* 此方法的作用是,如果没有表就创建打开,如果有表就打开
* @param db 可执行SQL语句
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table "+TABLE_NAME+"(_id integer primary key autoincrement, name text, age integer);");
} /**
* 此方法用于数据库升级
* @param db 可执行SQL语句
* @param oldVersion 以前旧版本的版本号
* @param newVersion 现在目前最新的版本号
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("alter table "+TABLE_NAME+" add sex text null");
}
}
升级成功后的 sex 字段:

Android-Sqlite-升级操作的更多相关文章
- Android SqLite升级
android开发中,如果大家使用到了sqlite就会牵涉到它的升级问题,因为升级后的表结构可能完全不一样,会有字段的添加或者删除等.. sqlite升级思路: 1:将表A重新命名:例 ...
- [Android] Sqlite 数据库操作 工具封装类
sqlite 数据库封装类 DatabaseUtil.java(封装的类) package com.jack.androidbase.tools; import android.content.Con ...
- android: SQLite升级数据库
如果你足够细心,一定会发现 MyDatabaseHelper 中还有一个空方法呢!没错,onUpgrade() 方法是用于对数据库进行升级的,它在整个数据库的管理工作当中起着非常重要的作用,可 千万不 ...
- Android——SQLite/数据库 相关知识总结贴
android SQLite简介 http://www.apkbus.com/android-1780-1-1.html Android SQLite基础 http://www.apkbus.com/ ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- Android数据存储之SQLite的操作
Android作为一个应用在移动设备上的操作系统,自然也就少不了数据的存储.然而SQLite作为一个轻型的关系型数据库,基于其轻量.跨平台.多语言接口及安全性等诸多因数考虑,因而Android较大的数 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- Android——SQLite数据库(二)升级数据库、增、删、改、查、事务
xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580
- [Android] Android 使用 Greendao 操作 db sqlite(2)-- 封装DaoUtils类
继续接上文: Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用 布局文件同上文一致,这里就不贴了. 一.封装DaoUtils类 User ...
随机推荐
- 黄聪:WordPress 多站点建站教程(三):主站如何调用子站的文章内容、SQL语句如何写?
1.如果懂得编程的朋友可以SQL语句,然后加上PHP函数等操作就可以通过直接调用网站的数据库信息来实现想要达到的目的. 既然要用到SQL语句首先得对WordPress多站点数据库有一个了解,多站点激活 ...
- 【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)
sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件 ...
- scrollTop、offsetHeight和offsetTop等属性用法详解--转转转
scrollTop.offsetHeight和offsetTop等属性用法详解: 标题中的几个相关相关属性在网页中有这大量的应用,尤其是在运动框架中,但是由于有些属性相互之间的概念比较混杂或者浏览器兼 ...
- HDU 4762 Cut the Cake(高精度)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- FilenameFilter 文件名过滤
public static final FilenameFilter JSON_CONFIG_FILE_FILTER = new FilenameFilter() { @Overrid ...
- Oracle Block Change Tracking功能(转)
from:http://space.itpub.net/?uid-25744374-action-viewspace-itemid-732091 通过使用block change tracking功能 ...
- PG自动化测试
安装软件包 yum groupinstall "Development Tools" yum install zlib-devel tcl-devel readline-devel ...
- ModuleNotFoundError: No module named '_sqlite3'
ModuleNotFoundError: No module named '_sqlite3' 解决: 1,首先安装 sqlite-devel yum install sqlite-devel 2,重 ...
- 551. Student Attendance Record I + Student Attendance Record II
▶ 一个学生的考勤状况是一个字符串,其中各字符的含义是:A 缺勤,L 迟到,P 正常.如果一个学生考勤状况中 A 不超过一个,且没有连续两个 L(L 可以有多个,但是不能连续),则称该学生达标(原文表 ...
- svn 技巧
参考:https://blog.csdn.net/wlccomeon/article/details/20398923