SQLite轻型关系型数据库的增删改查与事务

导入 SQLite 库: 在 Android 项目中使用 SQLite,首先需要导入 SQLite 库。这通常通过 Gradle 构建文件完成。在 build.gradle 文件中添加以下依赖

implementation 'androidx.sqlite:sqlite:2.2.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.3.1' // 如果使用 Room 数据库

基本操作

  1. 创建数据库:
    在Android中,可以使用SQLiteOpenHelper类来创建数据库。当调用SQLiteOpenHelper的getWritableDatabase()方法时,如果数据库不存在,则会创建一个新的数据库。
SQLiteOpenHelper openHelper = new SQLiteOpenHelper(context, "database_name", null, 1);
SQLiteDatabase database = openHelper.getWritableDatabase();
  1. 创建表:
    通过调用SQLiteDatabase的execSQL()方法,可以执行SQL语句来创建表。例如,下面是一个创建名为“users”的表的示例:
String createTableQuery = "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
database.execSQL(createTableQuery);
  1. 插入数据:
    可以使用SQLiteDatabase的insert()方法来插入数据。例如,下面是一个向“users”表中插入一条数据的示例:
ContentValues values = new ContentValues();
values.put("name", "John");
values.put("age", 25);
long insertId = database.insert("users", null, values);
  1. 查询数据:
    可以使用SQLiteDatabase的query()方法或rawQuery()方法来执行查询。例如,下面是一个从“users”表中获取所有数据的示例:
Cursor cursor = database.query("users", null, null, null, null, null, null);
while (cursor.moveToNext()) {
    int id = cursor.getInt(0);
    String name = cursor.getString(1);
    int age = cursor.getInt(2);
    // process the data
}
cursor.close();
  1. 更新数据:
    可以使用SQLiteDatabase的update()方法来更新数据。例如,下面是一个将id为1的用户年龄更改为30的示例:
ContentValues values = new ContentValues();
values.put("age", 30);
int updatedRows = database.update("users", values, "id = ?", new String[] { "1" });
  1. 删除数据:
    可以使用SQLiteDatabase的delete()方法来删除数据。例如,下面是一个删除id为1的用户的示例:
int deletedRows = database.delete("users", "id = ?", new String[] { "1" });
  1. 数据库版本管理:
    在SQLiteOpenHelper类中,可以指定数据库的版本号。当升级应用程序时,可以增加版本号并更新数据库模式。如果新版本与旧版本不兼容,则可以通过onUpgrade()方法来执行必要的操作。

这些是在安卓开发中使用SQLite数据库的一些基本知识点。通过掌握这些知识,你可以在应用程序中轻松地创建、操作和管理SQLite数据库。

SQLite事务

SQLite 事务是一组数据库操作,它们要么全部成功执行,要么全部失败回滚,以保持数据的完整性和一致性。在 Android 开发中,了解如何使用事务对数据库进行操作是非常重要的。以下是有关 SQLite 事务的相关知识:

1. 开始事务: 在 SQLite 中,使用 beginTransaction() 方法来开始一个事务。例如:

SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();

2. 设置事务成功: 如果在事务中的所有操作都成功执行,你可以使用 setTransactionSuccessful() 来标记事务成功。如果在标记成功之后发生回滚或异常,事务将被撤销。

db.setTransactionSuccessful();

3. 结束事务: 使用 endTransaction() 方法来结束事务。如果没有调用 setTransactionSuccessful(),事务将自动回滚。

db.endTransaction();

4. 事务回滚: 如果在事务中发生错误或需要撤销操作,可以使用 endTransaction() 来回滚事务。没有调用 setTransactionSuccessful() 的事务将自动回滚。

db.endTransaction(); // 回滚事务

5. 事务嵌套: SQLite 支持嵌套事务。如果在一个事务内开启另一个事务,必须在外部事务成功后才会提交内部事务。如果外部事务回滚,内部事务也会被回滚。

6. 性能优化: 使用事务可以提高数据库操作的性能,因为它们减少了磁盘写入和锁的次数。在批量插入大量数据时,将插入操作包装在事务内会显著提高性能。

7. 异常处理: 在处理数据库操作过程中,应该捕获可能发生的异常,并在必要时回滚事务。例如:

try {
    db.beginTransaction();
    // 执行数据库操作
    db.setTransactionSuccessful();
} catch (Exception e) {
    // 处理异常
} finally {
    db.endTransaction();
}

8. 自动事务(begin 和 end): 在使用 query()insert()update()delete() 等方法时,SQLiteOpenHelper 和 SQLiteDatabase 会自动为每个方法调用开始和结束一个事务。这意味着你不必手动管理事务,但需要注意每个操作都会独立成为一个事务。

9. 使用事务的场景: 事务通常在以下情况下使用:

  • 插入、更新、删除多条记录时,以提高性能。
  • 多个数据库操作需要原子性,要么全部执行成功,要么全部失败。

总之,SQLite 事务是保证数据库操作原子性和数据完整性的重要机制。在 Android 开发中,使用事务可以提高数据库操作的性能和稳定性。确保在必要的时候开始、结束和回滚事务,以保持数据库的一致性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WiFiMing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值