Android中数据的存储方式(二)—SQLite数据库
来源:互联网 发布:友情女王网络调教 编辑:程序博客网 时间:2024/06/10 14:24
程序中很重要的一部分是数据的交换,而交换中很重要一点是如何实现数据的存储。根据数据的作用,选择不同的保存方式和使用权限。Android数据的存储有如下6种:
- 保存数据到应用 程序私有的文件夹下
- 保存到公共的sd卡上
- sharedpreferences保存
- 使用xml文件去保存
- 使用数据库保存
- 内容提供者(Content provider)
一、概述
sqlite较其它android数据保存方式,sqlite能保存大量的结构相同的数据
支持标准的SQL语法
创建表
create table person( _id integer primary key autoincrement, name varchar(20), age integer);
增加一条记录
insert into person(name) values(‘tom‘, 25);
删除一条记录
delete from person where name = 'tom';
修改一条记录
update person set name = 'lisi' where name = 'tom';
查询数据
select * from person;
- 修改表结构
alter table person add balance integer;
google提供的api(CRUD)
google提供的CRUD的API很重要的一个特点是:每一个操作都有返回值(返回对应的行号),就此可以判断数据操作是否成功。注意,每次使用了数据库后都要close()。增加一条记录
SQLiteDatabase db = databaseHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", "zhangsan"); values.put("age", 4); long rowid = db.insert(“person”, null, values);
删除一条记录
SQLiteDatabase db = databaseHelper.getWritableDatabase(); db.delete("person", "personid<?", new String[]{"2"}); db.close();
修改一条记录
SQLiteDatabase db = databaseHelper.getWritableDatabase(); ContentValues values = new ContentValues(); //key为字段名,value为值values.put(“name”, “zhangsan”); //下面把id为1的人删除掉db.update("person", values, "personid=?", new String[]{"1"}); db.close();
查询数据
query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit)方法各参数的含义:
table:表名。相当于select语句from关键字后面的部分。如果是多表联合查询,可以用逗号将两个表名分开。
columns:要查询出来的列名。相当于select语句select关键字后面的部分。
selection:查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?”
selectionArgs:对应于selection语句中占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。
groupBy:相当于select语句group by关键字后面的部分
having:相当于select语句having关键字后面的部分
orderBy:相当于select语句order by关键字后面的部分,如:personid desc, age asc;
limit:指定偏移量和获取的记录数,相当于select语句limit关键字后面的部分。SQLiteDatabase db = databaseHelper.getWritableDatabase(); //下面的参数依次是:表、选择的行、条件、条件替代符内容、groupBy、having、排序方式、limitCursor cursor = db.query("person", new String[]{"personid,name,age"}, "name like ?", new String[]{"%zhang%"}, null, null, "personid desc", "1,2"); while (cursor.moveToNext()) { int personid = cursor.getInt(0); //获取第一列的值,第一列的索引从0开始 String name = cursor.getString(1);//获取第二列的值 int age = cursor.getInt(2);//获取第三列的值 } cursor.close(); db.close();
二、使用步骤
sqlite是内置的,通过继承SQLiteOpenHelper,就可以操作数据库,必须重写两个函数onCreate和onUpgrade
onCreate只在创建时调用一次,而之后每一次的版本更新,都调用onUpgrade方法
数据库的使用步骤是:
1.新建工程后,创建一个类继承SQLiteOpenHelper类,并重写一个构造函数和两个方法
2.在DAO层中创建SQLiteOpenHelper类,并调用sqlite.getWritableDatabase()方法,获取SQLiteDatabase
3.当版本需要变更时,需要修改程序中的构造方法,调整版本参数(最后一位参数)
public MySqliteOpenHelper(Context context) { super(context, "sky.db", null,1);}
4.为sqlite加入增删改查方法
5.关闭SQLiteDatabase
6.进行Test测试
三、版本问题
版本跳跃问题
由版本1跳到版本3的处理方法,根据 onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法参数的oldVersion和newVersion,写switch语句让不同的版本可以操作跳跃版本情况
四、数据库事务
数据库事务,一个事务的流程是:1.明确事务,2.开始这个事务,3.结束事务。事务如果只开始不结束,就回滚(即不执行事务中对数据的操作)。
//开始事务 db.beginTransaction(); try { Update account set money=money-100 where name=’aaa’; Update account set money=money+100 where name=’bbb’; db.execSQL("update account set money=money-100 where name='aaa'"); int i = 1/0; db.execSQL("update account set money=money+100 where name='bbb'"); db.setTransactionSuccessful(); } finally { //只有下面的方法执行,事务才会完成,否则回滚 db.endTransaction(); }
- Android中数据的存储方式(二)—SQLite数据库
- Android数据的存储方式(二) —— SQLite
- 关于Android数据存储方式(二)——SQLite
- android中数据的存储方式(SQLite)
- Android数据的四种存储方式(二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- VS开发环境下,外网联调!
- “4字检测法” 一招拆穿股骨头坏死
- 进击的KFC:第四节:C语言:一维数组
- linux下gcc/g++编译用法
- opensuse 虚拟机配置连接外网 和 远程xshell访问
- Android中数据的存储方式(二)—SQLite数据库
- eclipse无法编译android文件
- leetcode之Missing Number
- [Golang] 从零开始写Socket Server(6)【完结】:日志模块的设计与定时任务模块模块
- Android开发面试经——2.常见Android基础笔试题
- 配置Apache 和 配置Nginx 的默认站点
- Intent实现跳转到网页,其他app的界面
- 21分钟 MySQL 入门教程
- UNITY 5.2 Transform类