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函数用法是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)