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

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

文章目录

安卓数据存储方式

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

SharedPreferences共享偏好设置

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

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

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

Preferences偏好设置

安卓开发(三)数据存储机制、文件IO、SQLite
1-添加preference库依赖
安卓开发(三)数据存储机制、文件IO、SQLite
2-构建用户偏好设定页面的布局
安卓开发(三)数据存储机制、文件IO、SQLite

ListPreference这样的列表选择,表中具体某一项在单独的xml中定义
通过name建立关系,一个是列表显示的内容,一个是程序中真实对应的值。

安卓开发(三)数据存储机制、文件IO、SQLite
回List本身,指明实体和实体值,并赋予列表选项一个默认值1000。
安卓开发(三)数据存储机制、文件IO、SQLite
3 – 编写用户偏好页面的fragment类
注意该fragment继承自PreferenceFragmentCompat,
重写onCreatePreference方法,装载刚刚编写的布局文件。

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

此外还可以对用户偏好修改设置监听回调,例如

安卓开发(三)数据存储机制、文件IO、SQLite
在fragment主类实现preference更改的监听
重写onSharePreference()

安卓开发(三)数据存储机制、文件IO、SQLite
在应用程序恢复时注册监听,在挂起时取消监听。采用的是getPreferenceScreen()
安卓开发(三)数据存储机制、文件IO、SQLite

; 内部存储

安卓开发(三)数据存储机制、文件IO、SQLite
安卓开发(三)数据存储机制、文件IO、SQLite
采用文件输出流(FileOutputStream)来将数据保存到文件中 ,指定保存的文件名和模式
Context.MODE_PRIVATE是覆盖模式,下一个用户的数据会覆盖前一个
Context.MODE_APPEND是追加模式。
将name和pwd以##隔开,使用getBytes转为字节流 。
(只要涉及到流的形式,就需要注意判断流是否为空 ,如不为空,关闭流)

安卓开发(三)数据存储机制、文件IO、SQLite
采用文件输入流(FileInputStream)来获取文件的字节流。
用字节数组input来接收文件输入流(FileInputStream)的字节流内容,
使用.available(),指定大小。
判断当前读取是否为”-1″(-1代表文件末尾)。
将字节数组转为字符串,使用.split(”##”)方法将字符串以”##”为间隔,分为字符串数组。则数组第一项即为用户名,第二项即为密码。

外部存储(扩展存储)

安卓开发(三)数据存储机制、文件IO、SQLite
安卓开发(三)数据存储机制、文件IO、SQLite
manifest添加权限:
安卓开发(三)数据存储机制、文件IO、SQLite
检查外部存储的可读、可写状态:

安卓开发(三)数据存储机制、文件IO、SQLite
外部存储器存文件:
与内部存储的主要不同是,需检查是否可写入,文件保存除了filename参数,还需获取到外部存储的路径
getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS,filename)
安卓开发(三)数据存储机制、文件IO、SQLite
读取数据只需要读取权限:
方式类似

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

; SQLite

SQLite简介

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

安卓开发(三)数据存储机制、文件IO、SQLite
安卓开发(三)数据存储机制、文件IO、SQLite
安卓开发(三)数据存储机制、文件IO、SQLite
安卓开发(三)数据存储机制、文件IO、SQLite
在安卓sdk的平台工具目录下有sqlite3

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

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

安卓开发(三)数据存储机制、文件IO、SQLite
新建databaseHelper类
安卓开发(三)数据存储机制、文件IO、SQLite
onCreate方法中写sql语句,执行建表操作。

安卓开发(三)数据存储机制、文件IO、SQLite
在activity中运用databasehelp类来创表,获取到可写入的数据库表对象db
安卓开发(三)数据存储机制、文件IO、SQLite
编写插入数据的SQL语句,利用获取的数据库表对象执行语句。
这里需要注意的是使用单引号包裹每个数据内容,使用双引号和加号包裹变量名实现变量名到变量值的转化。

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

更新:

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

Original: https://blog.csdn.net/baiduwaimai/article/details/123340845
Author: 芸兮
Title: 安卓开发(三)数据存储机制、文件IO、SQLite

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815668/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球