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


layout: post
title: 安卓开发(三)数据存储机制、文件IO、SQLite
description: 安卓开发(三)数据存储机制、文件IO、SQLite
tag: 安卓


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

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)。
在这里插入图片描述

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值