返回

SQLite数据库教程:彻底掌握Android数据库操作

Android

SQLite:Android 应用中持久化存储的利器

在 Android 开发中,持久化存储是确保应用数据在设备重启或关机后依然可用的关键环节。当涉及到存储复杂的关系型数据时,SQLite 数据库脱颖而出,成为开发者的首选。

SQLite 简介

SQLite 是一款轻量级、无服务器的关系型数据库管理系统,专门为嵌入式系统而设计。其特点包括:

  • 轻量级: 二进制文件大小仅为数百 KB,非常适合资源受限的环境。
  • 无服务器: 无需安装和配置服务器,开箱即用。
  • 关系型: 支持关系型数据库模型,包括表、列、主键、外键等。
  • ACID: 符合原子性、一致性、隔离性、持久性原则,确保数据完整性。

创建 SQLite 数据库

要创建 SQLite 数据库,你需要先获取一个 SQLiteDatabase 对象。然后,使用 execSQL() 方法执行 CREATE TABLE 语句来创建表。

SQLiteDatabase db = getWritableDatabase();
db.execSQL("CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)");

插入数据

可以使用 insert() 方法向表中插入数据。第一个参数是表名,第二个参数是包含要插入数据的 ContentValues 对象。

ContentValues values = new ContentValues();
values.put("name", "John");
values.put("age", 20);
db.insert("user", null, values);

查询数据

query() 方法用于查询表中的数据。它有多个参数,包括表名、要查询的字段、查询条件、排序方式等。

Cursor cursor = db.query("user", null, null, null, null, null, null);

更新数据

要更新表中的数据,可以使用 update() 方法。第一个参数是表名,第二个参数是包含要更新数据的 ContentValues 对象。

ContentValues values = new ContentValues();
values.put("age", 30);
db.update("user", values, "id = 1", null);

删除数据

使用 delete() 方法删除表中的数据。第一个参数是表名,第二个参数是删除条件。

db.delete("user", "id = 1", null);

索引

索引是一种数据结构,可以提高查询速度。通过在表中的字段上建立索引,数据库可以更快地定位数据。

db.execSQL("CREATE INDEX index_age ON user (age)");

事务

事务是一系列操作,要么全部成功,要么全部失败。事务确保数据的完整性和一致性。

db.beginTransaction();
try {
    // 执行操作
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}

锁是一种机制,用于防止多个线程同时访问同一份数据。

db.execSQL("BEGIN IMMEDIATE TRANSACTION");
Cursor cursor = db.query("user", null, null, null, null, null, null);

触发器

触发器是一种机制,用于在特定事件发生时自动执行某些操作。

db.execSQL("CREATE TRIGGER log_user_changes AFTER UPDATE ON user FOR EACH ROW INSERT INTO log (user_id, change_type, change_time) VALUES (NEW.id, 'UPDATE', datetime('now'))");

视图

视图是一种虚拟表,由其他表的数据派生。

db.execSQL("CREATE VIEW old_users AS SELECT * FROM user WHERE age > 20");

总结

SQLite 是一个强大且易于使用的数据库管理系统,非常适合 Android 应用中的持久化存储。通过学习本教程,你已经掌握了 SQLite 数据库的基本用法,可以开始使用它来存储和管理你的数据了。

常见问题解答

1. 如何在 Android 中初始化 SQLite 数据库?

SQLiteDatabase db = getWritableDatabase();

2. 如何从 SQLite 数据库中查询所有数据?

Cursor cursor = db.query("user", null, null, null, null, null, null);

3. 如何向 SQLite 数据库中插入数据?

ContentValues values = new ContentValues();
values.put("name", "John");
values.put("age", 20);
db.insert("user", null, values);

4. 如何更新 SQLite 数据库中的数据?

ContentValues values = new ContentValues();
values.put("age", 30);
db.update("user", values, "id = 1", null);

5. 如何从 SQLite 数据库中删除数据?

db.delete("user", "id = 1", null);