Android中数据存储

Android中数据存储

一、FAQ

(一)View的作用:呈现数据,负责与用户交互

(二)View中呈现的数据来自哪里

二、Android中数据相关来源

(一)Android系统内存(例如HashMap,SparseArray...)

(二)Android 系统外存(内置sdcard,外置sdcard,网络)

(三)数据格式(非结构化(音乐、视频等),半结构化(xml文件),结构数据(SQLite 数据))

三、Android 中外存数据存储相关类型

(一)外置sdcard存储(外部存储):直接IO存储(一般外置sdcard存储)

(二)内存sdcard存储(内部存储)

1.直接IO存储(一般内置sdcard存储)

2.偏好设置存储(一般内置sdcard存储)

3.SQLite数据存储(一般内置sdcard存储)

(三)外部网络存储(例如云端):(没讲)

四、Android 中外置sdcard存储实现

外部存储(简单理解为外置sdcard存储,公有数据的存储)

 

(一)外置sdcard存储相关FAQ

1. 存储状态(是否已经挂载SDCARD)

 

2. 存储路径

 

3. 存储空间(是否有空间继续存储)

         

4. 存储权限(是否有权限)

外部存储需要在清单配置文件中

 

5. 存储实现(相关API及相关步骤)

 


 

(二)相关API

1. Environment(获得sdcard状态及相关目录)

2. Context(获得外置资源私有存储目录)

1) getExternalFileDir

2) getExternalCacheDir

3. StatFs(获得空间大小)

4. I/O(读写操作)

(三)FAQ

1. 外置sdcard可以实现应用程序私有数据的存储

2. 外置sdcard在写数据时要添加权限

五、Android中内置sdcard存储实现(内部存储)

(一)内置sdcard存储相关FAQ

1. 存储目录(Context)

2. 存储大小(StatFs)

3. 存储实现

内部存储的数据在应用卸载时会被删除,不会删除外部存储的数据

(二)内部存储相关类型及API

1. 直接I/O存储(Context,I/O)

2. 偏好设置存储(Context,sharedPreferences,Editor)

3. SQLite存储(Context,SQLiteDatabase,

SQLiteOpenHelper)

(三)内部存储中直接I/O存储实现

1. 相关API

1) Context

2) StatFs(获得存储空间大小)

2. Context对象的相关方法

1) openFileInput

2) openFileOutput

3) getFilesDir()

4) getFilesDir()

以上相关方法操作的目录:

a)/data/data/项目包/files

b)/data/data/项目包/cache

(四)内部存储中偏好设置存储实现?

1. FAQ

1) 何为偏好设置

偏好设置一般用于记录用户的一些喜好信息,例如

a.1)记住手机号

a.2)系统退出时清除缓存

a.3)记住系统状态信息

a.4)........

2) 偏好设置的路径

2. 偏好设置相关API

1) Context

2) SharedPreferences

3) Editor(写入数据时要借助此对象)

3. 相关实现(存储,读取)

1) 存储数据

a. 获得SharedPreferences对象

 

b. 获得Editor对象

 

c. 执行Editor对象putXXX(key,value)

 

d. 数据持久化(执行Editor对象的commit方法)

2) 读取数据

a. 获得SharedPreferences对象

 

b. 执行对象getXXX(key,默认值)

 

 

(五)内部存储中的SQLite存储?

1. FAQ?

a)SQLite 是什么?   (DBMS 数据库管理系统,是软件,可以管理多个数据库)

b)SQLite 应用场合?  (便携式设备上结构化的数据存储)

c) SQLite 存储实现?(API,存储格式,位置)

 

2. SQLite 相关API?

a)Context

b)SQLiteDatabase

c)SQLiteOpenHelper

 

3. SQLite 存储实现?(打开库,操作表,关闭库)

1)SQL?(结构化查询语言,标准)

a)DDL(数据定义语言:create,alter,drop,...)

b)DML(数据操纵语言:insert,update,delete,select,..)

c)DCL(数据控制语言:commit,rollback,....)

 

2)API&SQL 结合完成数据存储

2.1)打开或创建数据库(openOrCreateDatabase)

2.2)直接SQLiteDatabase对象的相关方法(例如execSQL(...),rawQuery(...),...)

rawQuery 游标,只有在查询的时候使用,把查询的列表存储到Cursor对象中

execSQL 在sql语句中,如果有占位符‘?’,通过execSQL去设定值

3)相关API(Context,SQLiteDatabase,SQLiteOpenHelder)

4. SQL的基本应用

1) 写入数据

insert into contact values (null,'139','A');

insert into contact (phone,name) values ('138','C');

insert into contact (phone) values ('137');

insert into contact values (null,?,?);

2) 查询数据

select * from contact;

select * from contact where phone like ? ;

select _id,phone from contact where name like ? order by _id desc;

3) 修改数据

update contact set name=? where _id=?;

update contact set name=?,phone=? where _id=1;

4) 删除数据

delete from contact;

delete from contact where _id=?;

delete from contact where phone like ?;

 

删除表结构使用如下语句

String sql1="drop table if exists contacts";

创建或打开数据库

sdb=openOrCreateDatabase("content", Context.MODE_PRIVATE, null);

创建表(if not exists 表示表不存在情况下)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值