Android 数据库进阶之事务处理批量数据
来源:互联网 发布:免费工资管理软件 编辑:程序博客网 时间:2024/05/22 03:14
今天来给大家继续分享Sqlite数据库的知识。如标题所讲,数据库批量处理数据。
首先,我们先清楚下什么是事务,是做什么用的,才能更好地去应用。
事务是数据库更新操作的基本单位,是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,可以是一条语句,也可以是批量的Sql语句。
事务回滚是指将该事务已经完成的对数据库的更新操作撤销。
在实际场景中,举个简单的例子,比如就是你在数据库升级的时候,需要更改或者移动多条数据,如果不是在一个事务的话,可能就会造成有些数据成功移动了,有些失败了,这样就给后续带来了麻烦,因为数据会混乱可能还要删除移动的数据,但是要是在一个事务的话,移动要么就都成功,要么就都失败,失败了话,就回到最初的状态,也不会出现混乱状况,失败回到最初状态,就是事务回滚了。
为什么要有事务呢?我觉得其实就是为了保证数据库逻辑操作的正确性,提高数据库处理效率,可增强用户的体验。
那么我们来看下,Android下使用事务:
1.打开数据库的事务
2.数据库的批量操作
3.设置事务的状态(true)
4.处理完成,提交数据(true则提交数据,false则数据回滚)
一般防止数据库操作出错,捕获异常,应将数据库执行语句以及db.setTransactionSuccessful
在实际开发中,比如有上千条数据需要插入到数据库中,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作,这样既效率低下,又耗费资源,而且还不能保证准确性。那么问题来了?这样的情况下,我们就用添加事务来解决,把所有数据用一个事务来处理。
db.beginTransaction();
try{
//批量处理操作
数据库的操作.........
db.setTransactionSuccessful();
//在setTransactionSuccessful和endTransaction之间不进行任何数据库操作
}catch(Exception e){
log.e("",""+e.printStackTrace());
}finally{
db.endTransaction();
}
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功。如果程序执行到endTransaction()之前调用了setTransactionSuccessful- Android 数据库进阶之事务处理批量数据
- Android 数据库进阶之数据库升级连带保留数据
- android数据库批量导入数据
- Android进阶之数据库存储
- 数据库 之事务处理
- Android批量插入数据到SQLite数据库
- Android批量插入数据到SQLite数据库
- Android批量插入数据到SQLite数据库
- Android--批量插入数据到SQLite数据库
- Android批量插入数据到SQLite数据库
- Android 数据库批量查询数据的操作
- JDBC进阶之事务处理基本原理及示例
- JDBC进阶之事务处理基本原理及示例
- android sqlite事务处理批量sql语句
- Android进阶之数据库框架ormlite使用
- Android进阶系列之1:数据库加密
- Android数据库操作之--批量插入
- android 数据库事务处理简单介绍
- 自然图片文字提取
- weiyi通讯录(四)获取通话记录
- 排序有哪几种好方法(仅供参考)
- STM32.ADC
- JAVA进程内存用量高的分析与解决
- Android 数据库进阶之事务处理批量数据
- 筛选 查找
- 关于Linux文件描述符的笔记
- plsql游标使用学习
- jQuery 学习笔记 + jQuery-UI 学习笔记
- java Annotation(注解)使用
- Oracle 相关知识点
- php批量建表:对分表有用
- JBPM框架全称Java Business Process Management(业务流程管理框架)