安卓开发(三)数据存储机制、文件IO、SQLite

目录

@[TOC]

安卓数据存储方式 在这里插入图片描述

SharedPreferences共享偏好设置

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

先获取到SharedPreferences对象,获取到他的编辑器,写入数据,提交。 sp.getString()来获取键值,第一个参数为键名,第二个参数为如果没有发现键名对应的键值应该返回的内容。 在这里插入图片描述

Preferences偏好设置

在这里插入图片描述 1-添加preference库依赖 在这里插入图片描述 2-构建用户偏好设定页面的布局 在这里插入图片描述

ListPreference这样的列表选择,表中具体某一项在单独的xml中定义 通过name建立关系,一个是列表显示的内容,一个是程序中真实对应的值。 在这里插入图片描述 回List本身,指明实体和实体值,并赋予列表选项一个默认值1000。 在这里插入图片描述 3 - 编写用户偏好页面的fragment类 注意该fragment继承自PreferenceFragmentCompat, 重写onCreatePreference方法,装载刚刚编写的布局文件。

在这里插入图片描述

此外还可以对用户偏好修改设置监听回调,例如 在这里插入图片描述 在fragment主类实现preference更改的监听 重写onSharePreference()

在这里插入图片描述 在应用程序恢复时注册监听,在挂起时取消监听。采用的是getPreferenceScreen() 在这里插入图片描述

内部存储

在这里插入图片描述 在这里插入图片描述 采用文件输出流(FileOutputStream)来将数据保存到文件中 ,指定保存的文件名和模式 Context.MODE_PRIVATE是覆盖模式,下一个用户的数据会覆盖前一个 Context.MODE_APPEND是追加模式。 将name和pwd以##隔开,使用getBytes转为字节流 。 (只要涉及到流的形式,就需要注意判断流是否为空 ,如不为空,关闭流)

在这里插入图片描述 采用文件输入流(FileInputStream)来获取文件的字节流。 用字节数组input来接收文件输入流(FileInputStream)的字节流内容, 使用.available(),指定大小。 判断当前读取是否为“-1”(-1代表文件末尾)。 将字节数组转为字符串,使用.split(“##”)方法将字符串以“##”为间隔,分为字符串数组。则数组第一项即为用户名,第二项即为密码。

外部存储(扩展存储)

在这里插入图片描述 在这里插入图片描述 manifest添加权限: 在这里插入图片描述 检查外部存储的可读、可写状态:

在这里插入图片描述 外部存储器存文件: 与内部存储的主要不同是,需检查是否可写入,文件保存除了filename参数,还需获取到外部存储的路径 getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS,filename) 在这里插入图片描述 读取数据只需要读取权限: 方式类似

在这里插入图片描述

SQLite

SQLite简介

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在安卓sdk的平台工具目录下有sqlite3

在这里插入图片描述

SQLite数据库表的创建与增删改查

在这里插入图片描述 新建databaseHelper类 在这里插入图片描述 onCreate方法中写sql语句,执行建表操作。

在这里插入图片描述 在activity中运用databasehelp类来创表,获取到可写入的数据库表对象db 在这里插入图片描述 编写插入数据的SQL语句,利用获取的数据库表对象执行语句。 这里需要注意的是使用单引号包裹每个数据内容,使用双引号和加号包裹变量名实现变量名到变量值的转化。

在这里插入图片描述 对于查询操作,查询的结果用游标cursor来接收。 cursor中有各种方法来获取查询结果。 先moveToFirst移动游标到第一条查询结果, 判断当前游标cursor的位置不在最后一条之后,则利用cursor提供的方法,获取对应的表中数据。cursor本身是对查询结果每一条的遍历,因此最后执行cursor移动到下一行。 在这里插入图片描述 带筛选条件的查询: sql语句中先用?代表参数args,args赋值具体的参数uname,注意这里是以字符串数组的形式。 然后查询语句为 db.rawQuery(sql,args)。 在这里插入图片描述

更新: 在这里插入图片描述

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏鸭!

打开支付宝扫一扫,即可进行扫码打赏哦