【安卓基础6】数据存储

本文聚焦安卓开发,介绍了共享参数SharedPreferences的使用场景、特点与用法;阐述了SQLite数据库的基本语法、数据库帮助器和管理器的操作;讲解了存储卡的文件操作,包括外部存储控件和图片读写;还说明了应用组件Application的特点、生命周期,以及用其保存map信息的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🏆作者简介:|康有为| ,大四在读,目前在小米做安卓开发,一起学习安卓,加油

🏆本文收录于 安卓学习大全持续更新中,欢迎关注

🏆安卓学习资料推荐:

        视频:b站搜动脑学院 视频链接 (他们的视频后面一部分没再更新,看看前面也挺好的)

        书籍:《第一行代码》(第3版) by 郭霖 (z-lib.org)

        思维导图: https://www.processon.com/view/link/62427cb2e0b34d0730e20e00(来自动脑学院)

目录

一、共享参数SharedPreferences

共享参数的使用场景

特点

共享参数的用法

二、数据库SQLite

SQLite基本语法

数据库帮助器SQLiteOpenHelper

创建数据库帮助器类

使用数据库帮助器获取数据库实例

数据库版本管理

数据库管理器SQLiteDatabase

获取 SQLiteDatabase 实例

执行 SQL 语句

插入数据

查询数据

更新数据

删除数据

事务处理

关闭数据库连接

操作数据库方式-总结

三、存储卡的文件操作

外部存储控件

在存储卡上读写图片文件

四、应用组件Application

特点

application的生命周期

示例:用Application保存map信息


一、共享参数SharedPreferences

SharedPreferences是Android的一个轻量级存储工具,采用的存储结构是Key-Value的键值对方式。

重量级存储工具就是指的我们常用的数据库

服务器开发中 常用properties来存储一些键值对,在安卓中就是用SharedPreferences

共享参数的使用场景

共享参数主要适用于如下场合:

  • 简单且孤立的数据,若是复杂且相互间有关的数据,则要保存在数据库中。

相互关联的数据:指的就是数据A中包含了数据B这种

  • 文本形式的数据,若是二进制数据,则要保存在文件中。
  • 需要持久化存储的数据,在APP退出后再次启动时,之前保存的数据仍然有效。

实际开发,共享参数经常存储的数据有APP的个性化配置信息、用户使用APP的行为信息、临时需要保存的片段信息等。

比如:自动登录,记住密码,小说app(返回后再次进入还是 原来看的页数),按钮的状态。

特点

SharedPreferences 是 Android 中用于存储简单键值对数据的一种轻量级持久化存储方式。它的主要特点包括:

  • 简单易用:SharedPreferences 提供了简单易用的 API,允许应用程序以键值对的形式存储和检索数据。
  • 轻量级:SharedPreferences 存储的数据通常很小,并且适合用于存储简单的配置信息、用户偏好设置等。
  • 基于文件存储:SharedPreferences 内部以 XML 文件的形式存储数据。每个应用程序都有自己的 SharedPreferences 文件用于存储应用程序私有的数据。
  • 应用级别数据:SharedPreferences 存储的数据是应用程序级别的,即每个应用程序都有自己独立的 SharedPreferences 实例用于存储数据,其他应用程序无法直接访问。
  • 轻量级加密:SharedPreferences 的数据存储在文件中,默认情况下是以明文形式存储的。但是,可以通过使用 MODE_PRIVATE 加密模式来提高数据的安全性,使得其他应用程序无法轻易读取和修改数据。
  • 实时性:SharedPreferences 中的数据是实时更新的,一旦数据发生变化,其他组件可以立即获取到最新的数据。

尽管 SharedPreferences 具有上述优点,但也有一些限制,例如不适合存储大量复杂数据、不支持事务操作等。因此,对于需要存储大量数据或需要复杂查询和操作的情况,可能需要选择其他数据存储方式,如 SQLite 数据库或使用 Room 持久化库。

共享参数的用法

如果想看更多的用法示例:

推荐

Android 中SharedPreferences的详解

获取 SharedPreferences 对象:

在 Activity 或 Fragment 中,可以通过 getPreferences() 方法获取 SharedPreferences 对象。如果需要在多个组件之间共享数据,可以使用 getSharedPreferences() 方法。


// 获取默认的 SharedPreferences 对象(仅在当前 Activity 或 Fragment 内有效)
SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);

// 获取自定义名称的 SharedPreferences 对象(可在多个组件之间共享)
SharedPreferences preferences = getSharedPreferences("custom_prefs", Context.MODE_PRIVATE);

编辑 SharedPreferences

要修改 SharedPreferences 中的数据,需要获取 SharedPreferences.Editor 对象,并使用其方法进行修改。修改完成后,必须调用 commit()apply() 方法来提交更改。


SharedPreferences.Editor editor = preferences.edit();
editor.putString("key", "value");
editor.putInt("intKey", 42);
editor.apply(); // 或者使用 editor.commit();

读取 SharedPreferences 中的数据:

使用 SharedPreferences 对象的方法来获取存储的数据。

第一个参数是键名,第二个参数是默认值,如果找不到对应的键时将返回默认值。


String value = preferences.getString("key", "default_value");
int intValue = preferences.getInt("intKey", 0);

二、数据库SQLite

在Android中,SQLite是默认的本地数据库引擎,它提供了一种轻量级、嵌入式的数据库解决方案。在Android应用程序中,你可以使用SQLite数据库来存储和检索数据。

推荐 学习博客

【Android入门到项目实战--4.5】—— SQLite数据库存储实现增删改查

Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练-绿豆通讯录)】

SQLite基本语法

因为 这里学习过MySQL,所以上手SQLite会比较容易。

SQLite 和 MySQL 都属于关系型数据库管理系统(RDBMS),它们使用 SQL语言进行数据库操作,因此在很大程度上,它们的基本 SQL 语法是相似的。许多基本的 SQL 查询、插入、更新、删除等语句在这两种数据库系统中都是通用的。

以下是一些在 SQLite 和 MySQL 中通用的 SQL 语句:


-- 创建表格
CREATE TABLE employees (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER,
    salary REAL
);

-- 插入数据
INSERT INTO employees (name, age, salary)
VALUES ('John Doe', 30, 50000.00);

-- 查询数据
SELECT name, age
FROM employees
WHERE age > 25;

-- 更新数据
UPDATE employees
SET salary = 55000.00
WHERE name = 'John Doe';

-- 删除数据
DELETE FROM employees
WHERE age < 25;

-- 查询所有数据
SELECT * FROM employees;

-- 查询去重数据
SELECT DISTINCT name, age
FROM employees;

-- 排序数据
SELECT * FROM employees
ORDER BY salary DESC;

-- 连接表格
SELECT employees.name, departments.department_name
FROM employees
JOIN departments ON employees.department_id = departments.department_id;

虽然基本语法很相似,但是需要注意一些差异。一些高级功能、数据类型、约束等方面可能会有一些不同。例如,MySQL 支持 AUTO_INCREMENT 属性来定义自增主键,而 SQLite 使用 INTEGER PRIMARY KEY AUTOINCREMENT 来实现相似的功能。此外,一些数据库管理系统特定的函数、语法和性能优化等也可能有所不同。

数据库帮助器SQLiteOpenHelper

数据库帮助器(SQLiteOpenHelper)是 Android 中用于管理 SQLite 数据库的帮助类。它提供了创建、升级数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值