一、安卓中的数据存储
-
数据存储简介
- 应用程序的参数设置和运行状态数据需保存到外部存储器,以防系统关机后丢失。
- Android 常见的数据存储方式有 SharedPreferences(系统配置暂存的轻量级存储)、File 存储(系统中的中小型存储机制)和 SQLite(系统中的相对大型存储机制)。
-
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。
-
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
-
SQLite 的简介
- 是一款轻型数据库,设计目标是嵌入式产品,占用资源低,在嵌入式设备中只需几百 K 内存。
- 对应的操作工具有 Android SDK 的 platform-tools 下的 sqlite3.exe、SQLite Developer、SQLite Expert 和 SQLite Administrator 等。
-
-
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 回收资源。
-
SQLite 中事务的处理
- 事务是作为单个逻辑工作单元执行的一系列操作,需满足 ACID 属性。
- SQLiteDatabase 采用 beginTransaction、endTransaction、inTransaction 和 setTransactionSuccessful 等方法控制事务。
-
SQLiteOpenHelper 类
- Android 提供的管理数据库的类,主要负责数据库的创建和版本更新。
- 常用方法有 getReadableDatabase、getWritableDatabase、onCreate、onUpgrade 和 close 等。
- 使用该类操作数据无需使用 SQLiteDatabase 的静态方法创建数据库实例,但需注意用 getReadableDatabase 和 getWritableDatabase 打开数据库时,若磁盘空间满会打开失败。