// 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都要有才可以。
3 个回复
FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866
相关文档:https://www.html5plus.org/doc/zh_cn/sqlite.html#plus.sqlite.transaction
坚挺小强 (作者)
实测可回滚。Promise.all[多个sql操作],begin\commit\rollback都要有才可以。
2***@qq.com
实测回滚不了,不知道 是退个步骤不对