数据存储技术
1、Shared Preferences存储
以XML格式存储文件,存储路径可以在DDMS中查看,路径为:
data---data---<该module所在的包名>---shared_prefs---xxx.xml
存储数据的步骤:
(1)获取SharedPreferences对象:通常情况又有两种方法进行获得,分别是getSharedPreferences()、getPreferences()。
第一种方法:语法格式:getSharedPreferences(String name,int mode)
参数一为存储的文件名称SharedPreferences文件名;
参数二为指定访问权限,通过安卓提供的常量进行指定,一般为:
MODE_PRIVATE:被本应用读写
MODE_MULTI_PROCESS:跨应用读写
第二种方法:语法格式:getPreferences(int mode),参数同上
(2)获得SharedPreferences.Editor对象:通过调用SharedPreferences对象的edit()方法实现
(3)向SharedPreferences.Editor对象中添加数据,添加方法如:
PutBoolean()、PutString()、PutInt() ------ 【put+数据类型】
(4)提交数据,通过editor对象提供的commit()方法实现。
读取数据的步骤:
(1)同存储数据的步骤一
(2)使用SharedPreferences类提供的getXxx()方法获取数据,比如:
getBoolean()、getString()、getInt() ------ 【get+数据类型】
2、文件存储:分为内部存储和外部存储
通过java的IO流来读取磁盘上的文件,输入流:openFileInput();输出流:openFileOutput()。
文件存储方式:分为内部存储、外部存储。
内部存储:
存储路径:data---data---<该module所在的包名>---files---内部存储文件
特点:① 默认只能被创建它的应用访问到
② 当这个应用卸载后,内部存储中的文件也被删除
③ 一旦内部存储空间耗尽,手机便无法使用
写入文件:
① 获取FileOutputStream对象
② 调用write()方法保存信息
③ 调用flush()方法清除缓存
④ 调用close()方法关闭输出流对象,注意在关闭之前需要判断文件输出流对象是否为空,只有不为空的时候才可以关闭
读取文件:
① 获取FileIputStream对象
② 调用read()方法读取信息
③ 调用close()方法关闭输入流对象,注意在关闭之前需要判断文件输入流对象是否为空,只有不为空的时候才可以关闭
外部存储:
也是存储于手机中的信息,区别是当手机与电脑进行连接时,可被电脑识别的信息为外部存储。
存储路径:storage---联合字符组成的文件---外部存储文件
读写外部存储文件的步骤:
① 获取外部存储目录,通过Environment.getExternalStorageDirectory()方法实现
② 读写外部存储空间的文件,读用FileInputStream对象,写用FileOutputStream对象
3、数据库存储,即SQLite数据库
优点:占用资源少、运行效率高、可移植性强、安全可靠
使用cmd或sqlite3.exe操作SQLite:
创建数据库目录:进入SDK\platform-tools子目录,通过adb shell获取root权限,输入命令mkdir data/data/包名/database
创建/打开数据表:首先要cd /data/data/包名/database,然后sqlite3 数据库名,然后 create table tb_user (id integer primary key autoincrement,name text not null,pwd text);意思是创建名为tb_user的表,该表包含的字段为id值,类型为int并设置自增、姓名,类型为text文本且不能为空、密码类型为text文本。
查询数据表:.tables
往数据表中插入字段:insert into tb_user values(null,'mr','123');意思是由于id是自增所以不用自己赋值写为null即可,然后name值为mr,pwd值为123
查询表中字段:select * from tb_user;
使用代码操作SQLite:
创建数据库(两种方法):
① 利用SqliteDatabase类提供的openOnCreateDatabase()方法
② 通过编写继承自SQLiteOpenHelper类
操作数据库(增删改查):insert()、delete()、update()、query()
4、数据共享,即Content Provider
作用:在不同的应用程序之间实现数据共享的功能,同时还能保证被访问数据的安全性。
数据模型:Content Provider使用基于数据模型的简单表格来提供其中的数据,其中每一行代表一个记录,每一列代表一个特定类型和含义的数据。
URL:"http://"为URL协议,固定的;"www.xxx.com"为网站域名,固定的;"xxx.php"为网站资源,动态的
URI:"content://"为Android规定的(固定),用来标识这个数据是由Content Provider管理的;"com.xxx.employeeprovider"为authority(固定),是URI的权限部分,用来对不同的应用程序做出区分,一般会采用完整的类名来保证它的唯一性;"/xxx/001"为Content Provider的路径部分(动态),用来指定要操作的数据,其中,"001"为资源ID(动态),用来指定被请求的记录的id值,若需要有多条,可以把这部分删除。
URL与URI的区别:URI是统一资源标识符,比较笼统的定位了资源,不局限于客户端和服务器;URL是统一资源定位符,可以定位网站上的一切资源,只要是网上的资源就有唯一的一个URL。
创建和使用Content Provider步骤:
① 继承ContentProvider类,用来创建一个新的数据提供者
② 声明Content Provider,在AndroidManifest.xml中使用<provider>标记进行声明
③ 使用Content Provider,通常为增删改查,分别使用ContentResolver.insert()、ContentResolver.delete()、ContentResolver.update()、ContentResolver.query()实现。