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;
}
}
--新建表
CREATE TABLE #t1(
n INT,
x VARCHAR(4)
)
---添加数据
insert into #t1 (n,x) values(1,'ff')
---修改数据
update #t1 set x='gg' where n=1
---删除数据
delete from #t1 where n=1
---删除表
DROP TABLE #t1
执行一条sql语句就好了,提前是,你的数据库要有一个dateTime类型的字段用来记录时间
例如你的表名叫
tab_message
时间字段叫date,那么你的sql就可以这么写了
javautilCalendar
c
=
CalendargetInstance();
javatextSimpleDateFormat
sdf
=
new
SimpleDateFormat("yyyy-MM-dd
HH:mm:ss");
cadd(CalendarHOUR_OF_DAY,
-24);
//当前时间减24小时
String
time
=
sdfformat(cgetTime());
delete
tab_message
where
date
<=
time
这个时间,你要在java时new
Date
再格式化成
yyyy-MM-dd
HH:mm:ss
格式
ALTER TABLE的SQLite SQLite支持ALTER TABLE的一个有限子集。
在ALTER SQLite中允许一个表或一个新列添加到现有表。删除列,或者添加或从表中删除约束。
sqlite中是不支持删除有值的列 *** 作的,所以alter table table_name drop column col_name这个语句在sqlite中是无效的,而替代的方法可以如下:
1根据原表创建一张新表
2删除原表
3将新表重名为旧表的名称
示例例子如下
1创建一张旧表Student,包含id(主码),name, tel
create table student (
id integer primary key,
name text,
tel text
)
2给旧表插入两个值
insert into student(id,name,tel) values(101,"Jack","110")
insert into student(id,name,tel) values(102,"Rose","119")
3接下来我们删除电话这个列,首先根据student表创建一张新表teacher
create table teacher as select id,name from student
4然后我们删除student这个表
drop table if exists student
5将teacher这个表重命名为student
alter table teacher rename to student
结果演示:
select from student order by name desc(desc降序, asc升序)
单击开始---->所有程序---->MicrosoftSQLServer2014,选择SQLServer2014ManagementStudio选项,打开软件。
2连接到服务器窗口中,输入服务器名称,选择SQLServer身份验证,输入登录名和密码,连接进入数据库。
3在左侧对象资源管理器中,展开数据库选项,找到NewData数据库。
4在NewData数据库上右击,选择删除 *** 作。
5删除对象窗口中,选择删除数据库备份和还原历史记录信息选项,同时选择关闭现有连接选项,单击确定。
6可以看到,SQLServer中的NewData数据库已删除。
7打开SQLServer安装目录中的DATA文件夹,NewData数据库已没有了,说明NewData数据库成功删除。
扩展资料:
SQL是StructuredQueryLanguage(结构化查询语言)的缩写。SQL是专为数据库而建立的 *** 作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库 *** 作的基础,并且现在几乎所有的数据库均支持SQL。
SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(basetable);存储模式(内模式)称为“存储文件”(storedfile);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。名称对称如^00100009a^:
SQL包括了所有对数据库的 *** 作,主要是由4个部分组成:
数据定义:这一部分又称为“SQLDDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。
数据 *** 纵:这一部分又称为“SQLDML”,其中包括数据查询和数据更新两大类 *** 作,其中数据更新又包括插入、删除和更新三种 *** 作。
数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。
嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。
参考资料:
以上就是关于android 数据库升级会清空以前存的数据吗全部的内容,包括:android 数据库升级会清空以前存的数据吗、怎样添加查询删除数据库,有哪些语句、android sql怎么删除当天的记录。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)