dataBase.setTransactionSuccessful();的作用是什么

在android的使用数据库时,qlite数据库默认情况下是“一个连接存在与一个事物”。有时候会操作大批量的数据,比如批量的写操作,如何让批量的操作在一个事物中完成呢?

 

在网上查了下,可以使用此方式:

dataBase.beginTransaction();        //手动设置开始事务

//数据操作

dataBase.setTransactionSuccessful();        

dataBase.endTransaction();        //处理完成 

 

但是不明白 dataBase.setTransactionSuccessful(); 的作用是什么?如果不调用此函数会有什么不同?

 

求助!

package com.example.orderfood; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class Sql extends SQLiteOpenHelper { // 提升版本号到5(表结构变更) private static final int DATABASE_VERSION = 5; private static final String DATABASE_NAME = "db_takeaway.db"; // 精简表结构常量 private static final String TABLE_BUSINESS = "d_business"; private static final String COL_ID = "u_id"; private static final String COL_PWD = "u_pwd"; public Sql(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.beginTransaction(); try { // 创建精简表结构(仅保留ID和密码) String createTable = "CREATE TABLE " + TABLE_BUSINESS + "(" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COL_PWD + " TEXT NOT NULL)"; db.execSQL(createTable); insertInitialBusiness(db); // 插入初始数据 db.setTransactionSuccessful(); } finally { db.endTransaction(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 处理从旧版本升级到V5的迁移[6,7](@ref) if (oldVersion < 5) { migrateToVersion5(db); } } private void migrateToVersion5(SQLiteDatabase db) { db.beginTransaction(); try { // 1. 创建临时新表 db.execSQL("CREATE TABLE temp_business (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COL_PWD + " TEXT NOT NULL)"); // 2. 迁移旧数据(只保留密码) db.execSQL("INSERT INTO temp_business (" + COL_PWD + ") " + "SELECT " + COL_PWD + " FROM " + TABLE_BUSINESS); // 3. 删除旧表 db.execSQL("DROP TABLE IF EXISTS " + TABLE_BUSINESS); // 4. 重命名新表 db.execSQL("ALTER TABLE temp_business RENAME TO " + TABLE_BUSINESS); db.setTransactionSuccessful(); } finally { db.endTransaction(); } } // 精简初始数据插入(只插入密码) private void insertInitialBusiness(SQLiteDatabase db) { ContentValues values = new ContentValues(); values.put (COL_ID,1716805360); values.put(COL_PWD, "123456"); db.insert(TABLE_BUSINESS, null, values); } }解释代码各个用处
06-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值