坚挺小强
坚挺小强
  • 发布:2023-04-17 08:53
  • 更新:2023-05-06 17:09
  • 阅读:412

5+ API plus.sqlite.transaction()怎么用?有没有完整的示例

分类:uni-app
2023-04-17 08:53 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

坚挺小强

坚挺小强 (作者)

// sqliteUtils  
function transactionOperate(operateType) {  
    return new Promise((resolve, reject) => {  
        plus.sqlite.transaction({  
            name: dbName, // 数据库名称  
            operation: operateType,  
            success(e) {  
                resolve(e)  
            },  
            fail(e) {  
                reject(e)  
            }  
        })  
    })  
}  
function executeSqlCode(sqlCode) {  
    return new Promise((resolve, reject) => {  
        plus.sqlite.executeSql({  
            // 数据库名称  
            name: dbName, // 数据库名称  
            sql: sqlCode, // sql 语句  
            success(e) {  
                resolve(200)  
            },  
            fail(e) {  
                reject(e)  
            }  
        })  
    })  
}  
// 事务业务  
sqliteUtils.transactionOperate('begin').then(res => {  
// 此处是封装的方法  
                            let addDevice = sqliteUtils.executeSqlCode(addDeviceSql);  
                            let addRelation = sqliteUtils.executeSqlCode(relationSql);  
                            Promise.all([addDevice,addRelation])  
                                .then(res => {  
                                    sqliteUtils.transactionOperate('commit')  
                                    uni.showToast({  
                                        title: '事务完成!'  
                                    })  
                                    setTimeout(() => {  
                                        uni.navigateBack({  
                                            delta: 1  
                                        });  
                                    }, 1000)  
                                }).catch(err => {  
                                    console.log(err)  
                                    sqliteUtils.transactionOperate('rollback');  
                                })  
                        })

实测可回滚。Promise.all[多个sql操作],begin\commit\rollback都要有才可以。

2***@qq.com

2***@qq.com

实测回滚不了,不知道 是退个步骤不对

要回复问题请先登录注册