青训营X豆包MarsCode 技术训练营 |安卓第三课

52 阅读3分钟

一、安卓中的数据存储

  1. 数据存储简介

    • 应用程序的参数设置和运行状态数据需保存到外部存储器,以防系统关机后丢失。
    • Android 常见的数据存储方式有 SharedPreferences(系统配置暂存的轻量级存储)、File 存储(系统中的中小型存储机制)和 SQLite(系统中的相对大型存储机制)。
  2. SharedPreferences 的使用

    • 适用情况:存储简单格式的数据,如普通字符串和标准类型的值,常用于存储应用程序的配置信息。
    • 存储数据:采用 key/value 形式,通过 Editor 对象的 putXXX 方法写入数据,如 putBoolean、putFloat 等。
    • 获取实例:通过 getSharedPreferences 方法,有 Context.MODE_PRIVATE(本程序内访问)、Context.MODE_MULTI_PROCESS(多进程形式)、Context.MODE_WORLD_READABLE(全局可读)、Context.MODE_WORLD_WRITEABLE(全局可写)等模式。
    • 本程序内读写:写入时先获取 SharedPreferences 实例和 Editor 对象,使用 putXXX 和 commit 方法;读取时通过 getXXX 方法获取数据。
    • 本质和位置:本质是文件读写,位置是 /data/data//shared_prefs/shared_name。
  3. File 的存储

    • 文件操作:同 JavaSE 一样,通过流实现,常见的有 FileInputStream 和 FileOutputStream。

    • 分为两类:本应用程序内部的数据文件和 SD 卡上的文件。

    • 应用程序内部的数据文件读写

      • 获取 IO 流:通过 Context 的 openFileInput 和 openFileOutput 方法,可指定不同的模式,如 MODE_PRIVATE、MODE_APPEND 等。
      • 访问数据文件夹:通过 getDir、getFilesDir、fileList 和 deleteFile 等方法。
    • SD 卡上的文件读写

      • 步骤:判断是否插入 SD 卡且有读写权限,获取 SD 卡目录,使用常用流操作进行读写。
      • 注意事项:在 AVD 中通过 mksdcard 命令创建 SD 卡,在 AndroidManifest.xml 中添加读写权限。

    二、android中的SQLite

    1. SQLite 的简介

    • 是一款轻型数据库,设计目标是嵌入式产品,占用资源低,在嵌入式设备中只需几百 K 内存。
    • 对应的操作工具有 Android SDK 的 platform-tools 下的 sqlite3.exe、SQLite Developer、SQLite Expert 和 SQLite Administrator 等。
  4. SQLite 的操作

    • 使用 SQLiteDatabase 代表数据库,提供一系列方法操作数据,如 openOrCreateDatabase、insert、delete、query、update、execSQL 和 close 等。
    • 打开或创建数据库:使用 openOrCreateDatabase 方法,参数为数据库路径和游标工厂,创建成功返回 SQLiteDatabase 对象,否则抛出异常。
    • 创建表:通过 execSQL 方法执行 SQL 建表语句。
    • 插入数据:调用 insert 方法,使用 ContentValues 存放键值对数据。
    • 修改数据:调用 update 方法,传入表名、ContentValues 类型的键值对、更新条件和更新条件参数。
    • 删除数据:调用 delete 方法,传入表名、删除条件和删除条件参数。
    • 通过 SQL 语句插入、删除、修改数据:使用 execSQL 方法执行相应的 SQL 语句。
    • 查询数据:通过 Cursor 类实现,使用 query 方法获取 Cursor 对象,可通过 Cursor 的相关方法遍历数据,也可使用 rawQuery 方法通过 SQL 查询语句获取 Cursor 对象。
    • 常见操作 SQLite 数据库的方法:execSQL 方法适合了解 SQL 语言的人使用,可进行所有数据库操作但无返回值;特殊方法适合初学 SQL 的人使用,可进行基本操作并有返回值。
    • SQLiteDatabase 操作步骤:获取 SQLiteDatabase 对象,执行 SQL 语句,操作执行结果,关闭 SQLiteDatabase 回收资源。
  5. SQLite 中事务的处理

    • 事务是作为单个逻辑工作单元执行的一系列操作,需满足 ACID 属性。
    • SQLiteDatabase 采用 beginTransaction、endTransaction、inTransaction 和 setTransactionSuccessful 等方法控制事务。
  6. SQLiteOpenHelper 类

    • Android 提供的管理数据库的类,主要负责数据库的创建和版本更新。
    • 常用方法有 getReadableDatabase、getWritableDatabase、onCreate、onUpgrade 和 close 等。
    • 使用该类操作数据无需使用 SQLiteDatabase 的静态方法创建数据库实例,但需注意用 getReadableDatabase 和 getWritableDatabase 打开数据库时,若磁盘空间满会打开失败。