数据存储技术

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()实现。

 

posted @ 2021-10-20 09:36  Sunshine_y  阅读(356)  评论(0编辑  收藏  举报