android 数据库升级会清空以前存的数据吗

android 数据库升级会清空以前存的数据吗,第1张

Android应用程序更新的时候如果数据修改了字段需要更新数据库,并且保留原来的数据库数据:

这是原有的数据库表

CREATE_BOOK = "create table book(bookId integer primarykey,bookName text);";

然后我们增加一个字段:

CREATE_BOOK = "create table book(bookId integer primarykey,bookName text,bookContent text);";

首先我们需要把原来的数据库表重命名一下

CREATE_TEMP_BOOK = "alter table book rename to _temp_book";

然后把备份表中的数据copy到新创建的数据库表中

INSERT_DATA = "insert into book select ,' ' from _temp_book";(注意' '是为新加的字段插入默认值的必须加上,否则就会出错)。

然后我们把备份表干掉就行啦。

DROP_BOOK = "drop table _temp_book";

然后把数据库的版本后修改一下,再次创建数据库 *** 作对象的时候就会自动更新(注:更新的时候第一个创建的 *** 作数据的对象必须是可写的,也就是通过这个方法getWritableDatabase()获取的数据库 *** 作对象)

然后在onUpgrade()方法中执行上述sql语句就OK了

public class DBservice extends SQLiteOpenHelper{

private String CREATE_BOOK = "create table book(bookId integer primarykey,bookName text);";

private String CREATE_TEMP_BOOK = "alter table book rename to _temp_book";

private String INSERT_DATA = "insert into book select ,'' from _temp_book";

private String DROP_BOOK = "drop table _temp_book";

public DBservice(Context context, String name, CursorFactory factory,int version) {

super(context, name, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db) {

dbexecSQL(CREATE_BOOK);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

switch (newVersion) {

case 2:

dbexecSQL(CREATE_TEMP_BOOK);

dbexecSQL(CREATE_BOOK);

dbexecSQL(INSERT_DATA);

dbexecSQL(DROP_BOOK);

break;

}

}

没有数据库:

没有数据库,也就是说数据量很少,可以按照 TTiikkyy 的回答来实现

再者,如果网站上的数据有入库的话,可以直接该接口即可。

一般来说,大多数都是有数据库的,一些门户,企业网站没有,大多数都是有的

有数据库:

网站数据的更新,就是数据库的更新,只要安卓应用再次读取数据库就行了

可以做定时去数据库取数据

1·创建数据库Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。

2·SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper 的子类,至少需要实现三个方法:构造函数,调用父类 SQLiteOpenHelper 的构造函数。

3·这个方法需要四个参数:

上下文环境(例如,一个 Activity),

数据库名字,

一个可选的游标工厂(通常是 Null),

一个代表你正在使用的数据库模型版本的整数。onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。

public class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context, String name, CursorFactory cursorFactory, int version) {  super(context, name, cursorFactory, version);  } @Override public void onCreate(SQLiteDatabase db) { // TODO 创建数据库后,对数据库的 *** 作 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO 更改数据库版本的 *** 作 }   superonOpen(db);   // TODO 每次成功打开数据库后首先被执行 }  } 复制代码接下来讨论具体如何创建表、插入数据、删除表等等。

Android Studio 是可以在线增量更新的,但是可能连不上服务器更新,解决办法如下:

1修改系统hosts文件,添加如下2行

20320846146 dl-sslgooglecom

20320846146 dlgooglecom

2修改Android Studio\bin目录下的studiovmoptions (32位系统) 或者 studio64vmoptions (64位系统)文件,添加如下3行

-DjavanetpreferIPv4Stack=true

-Dideaupdatesurl=>

以上就是关于android 数据库升级会清空以前存的数据吗全部的内容,包括:android 数据库升级会清空以前存的数据吗、关于Android应用开发中的问题、android SQLiteDatabase中的update函数用法是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9672293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存