android中sqlite数据库的更新问题

当我们的apk中的数据库更新的时候,我们会在onUpgrade()中修改版本号,这样用户
升级的时候就可以更新数据库了,但是如果此时新的用户安装此应用的话,那不是还是以前的旧版本的数据库(因为第一次安装只会执行onCreate()),这不是有问题吗,如果想让新用户也用新版本的数据库,而且老用户的数据不会丢失怎么办呢???

4个回答

继承SQLiteOpenHelper后需要在构造方法里指定当前db的版本号super(context, DATABASE_NAME, null, VERSION);

SQLiteOpenHelper在读取db时发现老的版本号小于当前版本号时,会执行onUpgrade()

楼主多虑了,把数据库的版本升级后,新用户安装的时候也是新版本的数据库。老用户安装应用会用新的数据库代替老数据库,数据也还在的。

1、假设你的应用为A,老版本数据库对应的apk为A1.0,新版本数据库对应的apk为A2.0。

2、老用户安装了A1.0,然后升级成了A2.0,没有问题。

3、那么新用户呢?如果他是直接安装了A1.0,那么和2一样,可以升级到A2.0;如果他是直接安装了A2.0,那就是新版本的数据库。

可以用电脑上的手机助手解决,求1积分

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android SQLite更新问题
请问我的更新语句有问题嘛?一直报错。如下图rnrn[img=https://img-bbs.csdn.net/upload/201502/13/1423757292_709428.png][/img][img=https://img-bbs.csdn.net/upload/201502/13/1423757299_353657.png][/img]rnrn[code=java]// 更新一条记录rn public void update(Plan plan) rn db.execSQL(rn "update plan set type=?, plan_time=? ,name=? ,descripetion=? ,reward=? where _id=?",rn new Object[] plan.getType(), plan.getPlan_time(),rn plan.getName(), plan.getDescription(), plan.getReward(), plan.get_id() );rn [/code]
android SQLite数据库:创建及更新
一个Book的建表语句 create table Book(     id integer primary key autoincrement, //id是主键,autoincrement表示id是自增长的     author text,     pages integer,     price real,     name text)  前面的字符串表示数据id,后面的表示数据类
更新sqlite数据库的问题
需要更新detail viewcontroller中textfield的记录。但是点击了更新按钮,会更新失败。rnrn -(IBAction)updateQuery:(id)senderrn rn sqlite3_stmt *statement;rn rn const char *dbpath = [databasePath UTF8String];rn rn if (sqlite3_open(dbpath, &Information) == SQLITE_OK)rn rn NSString *updateSQL = [NSString stringWithFormat: @"update CONTACTS set address=\"%@\",phone=\"%@\",imageUrl=\"%@\" WHERE name=\"%@\"",daddress.text,dphone.text,durl.text,dname.text];rn rn const char *update_stmt = [updateSQL UTF8String];rn rn sqlite3_prepare_v2(Information, update_stmt, -1, &statement, NULL);rn rn if (sqlite3_step(statement) == SQLITE_DONE)rn rn dstatuslabel.text=@"updated successfully";rn rn elsern rn dstatuslabel.text = @"Failed to update contact";rn rn rn sqlite3_finalize(statement);rn sqlite3_close(Information);rn rn rn
Android 数据库SQLite更新升级问题
Android中数据持久化存储可以使用SQLite,常用的是SQLiteOpenHelper。这样就会引申出一些数据库升级的问题。比如,数据库V1版本中原始表中只有2个字段,在升级数据库V2版本中想要在表中多加1个字段。或者是 用户直接安装的是数据库V2版本,如何保证所有表中的字段是最新的?假设有数据库V1,数据库V2,数据库V3。存在2种安装情况,都要考虑到。 1,首先安装V1,依次升级
Android中的SQLite数据库
关于Android中的SQLite数据库的使用
Android中的SQLite 数据库
SQLite 是android系统集成的一个轻量级数据库。SQLite 是一个嵌入式的数据库引擎,专门适用于资源有限的设备上,如Android和IOS 上 都是支持的SQLite数据库。本质上SQLite数据库只是一个文件。也就是说,当我们的程序创建或者打开一个SQLite数据库时,其实只是打开了一个文件准备读写。SQLiteDatabaseandroid提供了一个SQLiteDatabase代表一
Android中的数据库——SQLite
SQLite是遵守ACID的关系型数据库管理系统。 废话不多说,直接上代码。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //打开或创建test.db数据库 SQLiteDatabase db = openOrCre
Android sqlite 级联删除更新
大概是一个租房管理系统,我要求的是rndelete from house where houseName = ? 之后,可以级联删除与该houseName有关的内容rnThis is my tables building in java:rnrnrnpublic void onCreate(SQLiteDatabase db) rn // TODO Auto-generated method stubrn String sqlhouse = "create table house (houseName char(20) primary key, number int not null);";rn db.execSQL(sqlhouse);rn String sqlroom = "create table room(houseName char(20),roomNumber integer ,waterConsumption int not null"rn + ",electricityConsumption int not null,primary key(houseName,roomNumber),"rn + "foreign key (houseName) references house (houseName) on delete cascade on update cascade);";rn db.execSQL(sqlroom);rn String sqlrenter = "create table renter(Id char(18) primary key,name char(20) not null,phoneNumber char(11) not null)";rn db.execSQL(sqlrenter);rn String sqlcheckindocument = "create table CheckInDocument(Id char(18),houseName char(20),roomNumber int,deposit int not null,rental int not null,startingDate Date not null,surfing int not null,waterFare float not null,electricityFare float not null,totalAmount float,primary key (houseName,roomNumber),foreign key (Id) references renter(Id) on delete cascade on update cascade,foreign key(houseName,roomNumber) references room(houseName,roomNumber) on delete cascade on update cascade)";rn db.execSQL(sqlcheckindocument);rn String sqlcheckoutdocument = "create table checkOutDocument(houseName char(20),roomNumber char(10),checkOutDate Date not null,amount int,waterConsumption int not null,electricityConsumption int not null,"rn + "primary key (houseName,roomNumber),foreign key(houseName,roomNumber) references room(houseName,roomNumber) on delete cascade on update cascade)";rn db.execSQL(sqlcheckoutdocument);rn String sqlrentingdocument = "create table rentingDocument(houseName char(20),roomNumber char(10),waterConsumption int not null,electricityConsumption int not null,rentingDate Date not null,amount int not null,"rn + "primary key (houseName,roomNumber),foreign key(houseName,roomNumber) references room(houseName,roomNumber) on delete cascade on update cascade)";rn db.execSQL(sqlrentingdocument);rn rnrn在手机上运行后,我把数据库导入电脑的sqlite3,y然后执行删除语句,完全没问题。rn但是在手机上,我执行删除houseName之后,发现不能实现级联删除,请大神指点!!!!!
sqlite 数据库 数据文件更新
应用程序如何监控本地sqlite数据文件表是否更新,都有哪些方法?
android的SQLite数据库基础操作(创建数据库,更新,增删改查)
一个基本的android本地数据库的demo,包含了SQLite的基本的创建,更新和增删改查
android SQLite更新数据库版本最佳写法
方法是从《第一行代码》中改写过来的 onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion)方法在数据库版本变高之后会执行, 当我们数据库为第一版时,只有一个Book表,创建比较简单,只用在onCreate里新建一个Book即可public class MySql extends SQLiteOpenHelper{
Android中Sqlite数据库的使用
1.在adb shell 下的Sqlite3的一些常用命令: sqlite3【要创建的数据库】:如果数据库不存在就进行创建,如果存在就打开已有的数据库 .databases 用来检查它是否在数据库列表中 .tables 查看数据库中所有的表 .schema 【表名】查看表的信息 2.Sqlite中的sql语句操作(⊙﹏⊙)我不太喜欢大写,所以sql语句能小写的我都小写啦……创建一张表:crea
Android中自带的SQLite数据库
当我们需要存储大量数据的时候就需要数据库,Android自带了一种轻量级数据库SQLite。SQLite甚至不需要安装和启动服务进程,它只是一个后缀为.db的数据库文件,但它支持SQL语句。 关于SQLite的使用需要一个SQLiteDataBase类,该类底层就是一个数据库文件,一个该类代表一个数据库,对数据库的操作也要通过SQLiteDataBase类。   SQLiteDatabase
Android中SQLite数据库学习笔记
简介Android会将我们的持久性数据存储在文件系统中,为了简化我们开发应用时所需要写入的类容,Android提供了多个结构化的存储选项:SharedPreferences、SQLite Database等。SharedPreferences类会提供通用的框架,使我们可以保存和检索原始数据类型,如布尔型(boolean)、浮点型(float)、整型(int)、长整型(long)和字符串(string
Android中的SQLite数据库存储
SQLite数据库是一个轻量级的、嵌入式的关系型数据库,可以方便的使用SQL语句实现数据的增加、修改、删除、查询、事务控制等操作。 Android系统中,要进行SQLite数据库的操作使用如下所示的类和接口: 1.android.database.sqlite.SQLiteDatabase    完成数据的CRUD操作及事务处理 2.android.database.sqlite.SQLit
Android中使用Sqlite数据库
上代码,慢慢解释。关键点:SQLiteOpenHelper, 注意点:SQLite和sql一样,修改删除返回的是修改的行数,如果需要外部应用调用而且需要实现自增,id需要用_id ============================================================================================== public c
Android中SQLite数据库存储
为什么要用SQLite存储如果不使用存储,重启手机会导致数据丢失,这就是临时数据,当时数据保存在内存中,关机之后内存释放,数据丢失。如果不想数据丢失,需要使用数据持久化技术。常见的有SharePreference、数据库存储、SD卡存储、IO流。这里我只说用数据库存储,SharePerference虽说好用,但是不适合存储一些数据量比较大的数据。像这种”累活”还是交给数据库比较好SQLite数据库的
android中数据库sqlite的增删改查
【增删改查】 package com.test.helloworld; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLi
android中使用数据库Sqlite
1.先创建一个类MyOpenHelperpackage zyl.cn.demo1019.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.T...
android中sqlite数据库的使用
用一个Demo程序完成sqlite数据库的增删查改。创建数据库和表android中使用SQLiteDatabase需要先实现SQLiteOpenHelper类:public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_BOOK = "create table " + Co
在android中使用SQLite数据库
SQLite数据库以其轻量、体积小等特点,使其在开发中运用的非常广泛,在前面的博客中我也介绍过在Cocos2d-x中使用SQLite数据库,这篇博客是介绍在Android中使用SQLite数据库,Android中直接集成了SQLite数据库,使用起来非常方便,不需要向Cocos2d-x中那样添加外部文件 我将使用SQLite数据库实现一个下图所示的效果,打开app后会弹出下图所示的界面
Android中SQLite数据库的创建
最近开始学安卓中的SQLite数据库,从不同的书上看到了两种创建SQLite数据库的方法。rn方法一:通过SQLiteDatabase类的静态方法打开或创建数据库。rn[code=java]rnSQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase("/data/data/com.xxx.sqlitedatabase/users.db", null);rn[/code]rnrn方法二:写一个类继承SQLiteOpenHelper。rn必须定义一个构造方法:rn[code=java]rnpublic MyOpenHelper(Context context, String name, CursorFactory factory, int version)rnrnrn[/code]rn[code=java]rn//创建OpenHelper对象rnMyOpenHelper oh = new MyOpenHelper(getContext(), "person.db", null, 1);rn//获得数据库对象,如果数据库不存在,先创建数据库,后获得,如果存在,则直接获得rnSQLiteDatabase db = oh.getWritableDatabase();rn[/code]rnrn我的疑问是,一般在开发中我们使用哪种方法创建数据库会好一些,还有这两种数据库创建方法的区别,谢谢。
Android 中使用 SQLite 数据库
一、Android 中SQLite 介绍 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。 由于JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,会消耗太多的系统资源,对于手机这种内存受限设备来说并不合适。因此Android 提供了一些...
Android中SQLite数据库使用
在Android中使用SQLite,包括简单的“增”,“删”,“改”,“查”操作
Android中的Sqlite数据库的简单使用
前几天学习了Android中的数据存储,包括文件存储,SharedPreferences存储,还有就是Acndroid中的特色:SQLite数据库存储了。让我比较惊讶的是Android中竟然内嵌了一个轻量型的数据库SQLite数据库,使得本地的数据持久化有了一个质的飞跃。       通过前两天上课听老师讲解,和课下自己看书总结,想在博客上把自己对于SQLite数据库的理解做一下总结,也是方
Android中的SQLite数据库的简单使用
Android中的SQLite数据库的简单使用什么是SQLiteSQLite,是一款轻型的数据库,是遵守ACID(原子性、一致性、隔离性、持久性)的关联式数据库管理系统,多用于嵌入式开发中。 它是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。 SQLite由以下几个部分组成:SQL编译器、内核、后端以及附件。SQ
说说 Android 中的 SQLite 数据库
SQLite 是一款轻量级的关系型数据库,它的运算速度非常快, 占用资源很少,通常只需几百 K 的内存就足够了,因而特别适合在移动设备上使用。它不仅支持标准的 SQL 语法,还遵循了数据库的 ACID 事务。这套数据库可是内置于 Android 系统中的哦O(∩_∩)O哈哈~ 当需要存储大量复杂的关系型数据时,就要用到关系型数据库啦。 1 创建数据库 Android 提供了一个 SQLi...
Android中数据存储----SQLite数据库
在Android实际开发中,我们的项目基本上都会用到数据库,SQLite是Android内置的一个很小的关系型数据库,我们在Android的系统架构里面就会发现,在应用程序框架层中就有一个SQLite,如下图:    SQLite简介    SQLite数据库是一种轻量型的数据库,适用于这种嵌入式的程序中。SQLite数据库文件与Excel有些类似,我们可以根据Excel来理解SQLite的数据库文
android中的SQLite数据库存储
写下这个,只是让自己记忆的更深。   创建数据库 首页现创建一个数据库。 如下是代码,我这里只创建了一个表,用来存储一些用户信息。 创建数据库表 /** * Created by acer on 2016/9/7. * @author Rine * 创建数据库 */ public class MyOpenHelper extends SQLiteOpenHelper { ...
android中关于SQLite数据库的问题
想请问下大家rnrn在开发android应用时, 数据库是在项目里的某些程序里创建 并写入数据 ,rn还是把已经写好数据的数据库直接放入包中呢
android中关于sqlite数据库的操作问题
通常都是新建一个DBHelp类来继承sqliteopenhelper,在构造函数中rnpublic DBHelp(Context context)rnrn super(context,database,factory,version);rnrn其中的context和factory分别是什么意思?~
android中sqlite的问题
关于这个方法 SQLiteDatabase.insert(table, nullColumnHack, values);rn其中的nullColumnHack是代表什么
Android中SQLite的创建和更新!
文章目的:快速入门Android中的SQLite(数据库)来实现创建和升级(更新) 前言:Android 为了让我们能够方便地管理数据库,提供了一个SQLiteOpenHelper类, 借助这个类就可以非常简单地对数据库进行创建和升级。因本文是快速入门,就不对SQLiteOpenHelper进行详细介绍,这里简单提一下:SQLiteOpenHelper中有两个抽象方法,分别是onCreate
android sqlite数据库表字段更新
android sqlite数据库表字段更新,调用onUpgrade方法出现了Can't upgrade read-only database from version 3 to 4: 异常,有哪个大神碰到过或者知道怎么解决。nn代码:npublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) n String sql = " alter table person modify phone varchar(100)";n db.execSQL(sql);n n nn```n n```nnnn```n n```nn
SQLite数据库创建、更新入门
简述:          SQLiteOpenHelper 是一个抽象类,就是说如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。 SQLiteOpenHelper 中有两个抽象方法,分别是 onCreate()和 onUpgrade(), 我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。 SQLiteOpenHelper 中还
SQLite数据库创建、更新demo
SQLiteOpenHelper 是一个抽象类,就是说如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。 SQLiteOpenHelper 中有两个抽象方法,分别是 onCreate()和 onUpgrade(), 我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。 SQLiteOpenHelper 中还有两个非常重要的实例方法 , getReadableDatabase() 和getWritableDatabase()。 这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库) , 并返回一个可对数据库进行读写操作的对象。 不同的是,当数据库不可写入的时候(如磁盘空间已满)getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而 getWritableDatabase()方法则将出现异常。
Sqlite 数据库表连接更新(update)
需要更新一个字段,但是要两个表共同过滤要更新的数据,比如有taA,taB两个表 taB表中 AID是taA表的主键Id,一对一,要更新taA表的col1字段,怎么写呢?rnrn我是这样写的rnrnupdate A set A.col1='xxx' from taA A,taB B where A.Id=B.AID rnrn但是会报一个错误,如下rnrnrn[Err] 1 - near ".": syntax error
【android】SQLite数据库
【android】SQLite数据库,为什么我debug的时候会出现source not found的??
Android 数据库 SQLite的简单使用
1、登录mysql -uroot -p1232、查看数据库show databases;3、删除指定的数据库drop database employee;4、查看数据库show databases;5、创建数据库create database hdib;6、查看数据库show databases;7、切换数据库(使用数据库)use hdib;8、查看表show tables;9、创建表create...
Android Sqlite数据库的使用
创建数据库 新建一个Android工程,再创建一个类MySqlLite继承SQLiteOpenHelper创建成功后,打开MysqlList.java文件,你会看到有报错。使用Alt+Enter键选择Implement Methods ,实现接口onCreate和onUpgrade这时候依旧会报错,继续Alt+Enter选择 第一个,第一个 最终的代码如下 public class Mysql
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview