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

本文探讨了Android平台下SQLite数据库的事务处理机制,并重点解析了database.setTransectionSuccessful()函数的作用,帮助读者深入理解该函数如何确保事务成功提交。

android平台下sqlite事务处理中:

 

database.setTransectionSuccessful()函数的作用是什么?

 

求助!

android 报错12-05 07:04:42.299112 2275 2275 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5 SQLITE_BUSY) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.nativeExecuteForLong(Native Method) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:800) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.sqlite.SQLiteSession.executeForLong(SQLiteSession.java:678) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:110) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:1044) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:1032) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.getVersion(SQLiteDatabase.java:1338) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:388) 12-05 07:04:42.299112 2275 2275 E AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:340) 如何知道是哪些进程访问导致这个数据繁忙,或者怎么加日志。
最新发布
12-18
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
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值