From a5fdd9ed8ec5541e3790bef5e29afa4ce46c21e2 Mon Sep 17 00:00:00 2001 From: SimpleLove520 <1960997571@qq.com> Date: Sun, 10 Mar 2024 15:41:47 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AF=B9=E4=BA=8E=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=93=8D=E4=BD=9C=E8=BF=94=E5=9B=9E=E8=A1=8C?= =?UTF-8?q?ID=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=BD=B1=E5=93=8D=E7=9A=84=E6=9D=A1=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: SimpleLove520 <1960997571@qq.com> --- .../io/flutter/plugins/sqflite/Database.ets | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/Database.ets b/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/Database.ets index 475f49c..c14fab7 100644 --- a/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/Database.ets +++ b/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/Database.ets @@ -22,9 +22,12 @@ import { Constant } from './Constant'; import { BusinessError } from '@ohos.base'; import { MethodResult } from '@ohos/flutter_ohos/src/main/ets/plugin/common/MethodChannel'; import MethodCall from '@ohos/flutter_ohos/src/main/ets/plugin/common/MethodCall'; +import Log from '@ohos/flutter_ohos/src/main/ets/util/Log'; import { MethodCallOperation } from './operation/MethodCallOperation'; import { BatchOperation } from './operation/BatchOperation'; +type HandleCallback = (x: Object) => void; + export class Database { public context: common.Context; public path: string; @@ -56,19 +59,24 @@ export class Database { operation.error(Constant.SQLITE_ERROR, message + '' + code, ''); } - private static async executeOrError(operation: Operation, db: relationalStore.RdbStore): Promise { + private static async executeOrError(operation: Operation, db: relationalStore.RdbStore, callback?: HandleCallback): Promise { let command: SqlCommand = operation.getSqlCommand(); let operationInTransaction: Boolean = operation.getInTransactionChange(); let sqlArguments: ValueType[] | undefined = operation.getArgument(Constant.PARAM_SQL_ARGUMENTS); let sql: string = command.getSql(); + let promise: ValueType; try{ if(sqlArguments == undefined || sqlArguments.length < 1) { - let promise = await db.executeSql(sql); + promise = await db.execute(sql) as ValueType; } else { - let promise = await db.executeSql(sql, sqlArguments); + promise = await db.execute(sql, sqlArguments) as ValueType; } + Log.i("Tag", "返回来的值:" + promise); Database.enterOrLeaveInTransaction(operationInTransaction); + if (callback != undefined) { + callback(promise) + } return true; } catch(err) { Database.handleException(operation, err); @@ -137,7 +145,9 @@ export class Database { } private static async doInsert(operation: Operation, db: relationalStore.RdbStore): Promise { - let executeSuccess: boolean = await Database.executeOrError(operation, db); + let executeSuccess: boolean = await Database.executeOrError(operation, db, (rowId) => { + operation.success(rowId); + }); if(!executeSuccess) { return false; } @@ -147,7 +157,6 @@ export class Database { operation.success(null); return true; } - operation.success(1); return true; } @@ -157,7 +166,9 @@ export class Database { } private static async doUpdate(operation: Operation, db: relationalStore.RdbStore): Promise { - let executeSuccess: boolean = await Database.executeOrError(operation, db); + let executeSuccess: boolean = await Database.executeOrError(operation, db, (rows) => { + operation.success(rows); + }); if(!executeSuccess) { return false; } @@ -167,7 +178,6 @@ export class Database { operation.success(null); return true; } - operation.success(1); return true; } -- Gitee From 3d7fbe5d37c3a8eb11efa89e676d6ee4393fdaff Mon Sep 17 00:00:00 2001 From: SimpleLove520 <1960997571@qq.com> Date: Sun, 10 Mar 2024 20:39:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=A8batch=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E4=B8=AD=E5=A2=9E=E5=8A=A0/=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8E=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=EF=BC=8C=E6=9F=A5=E8=AF=A2=E5=9B=9E=E6=9D=A5=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B2=A1=E6=9C=89=E5=8C=85=E5=90=ABbatch=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E4=B8=AD=E7=9A=84=E5=A2=9E=E5=8A=A0/=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=BF=99=E9=83=A8=E5=88=86=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?----doing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: SimpleLove520 <1960997571@qq.com> --- .../io/flutter/plugins/sqflite/Database.ets | 31 +++++++++++++------ .../sqflite/operation/BaseReadOperation.ets | 6 ++-- .../plugins/sqflite/operation/Operation.ets | 2 +- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/Database.ets b/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/Database.ets index c14fab7..3943bb3 100644 --- a/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/Database.ets +++ b/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/Database.ets @@ -61,7 +61,7 @@ export class Database { private static async executeOrError(operation: Operation, db: relationalStore.RdbStore, callback?: HandleCallback): Promise { let command: SqlCommand = operation.getSqlCommand(); - let operationInTransaction: Boolean = operation.getInTransactionChange(); + let operationInTransaction: boolean = operation.getInTransactionChange(); let sqlArguments: ValueType[] | undefined = operation.getArgument(Constant.PARAM_SQL_ARGUMENTS); let sql: string = command.getSql(); let promise: ValueType; @@ -88,26 +88,37 @@ export class Database { public static async execute(operation: Operation, db: relationalStore.RdbStore): Promise { let command: SqlCommand = operation.getSqlCommand(); let sql: string = command.getSql(); + let executeSuccess: boolean = false; + let inTransactionChange: boolean = operation.getInTransactionChange(); + let enteringTransaction: boolean = (inTransactionChange == true && operation.hasNullTransactionId()); + if(enteringTransaction) { + Database.currentTransactionId = ++ (Database.lastTransactionId); + } + if(sql == 'BEGIN IMMEDIATE') { db.beginTransaction(); - operation.success(null); + Database.enterOrLeaveInTransaction(inTransactionChange); + executeSuccess = true; + Database.handleExecute(executeSuccess, enteringTransaction, operation, inTransactionChange); return; } else if(sql == 'COMMIT') { db.commit(); - operation.success(null); + Database.enterOrLeaveInTransaction(inTransactionChange); + executeSuccess = true; + Database.handleExecute(executeSuccess, enteringTransaction, operation, inTransactionChange); return; } else if (sql == 'BEGIN EXCLUSIVE') { - operation.success(null); + Database.enterOrLeaveInTransaction(inTransactionChange); + executeSuccess = true; + Database.handleExecute(executeSuccess, enteringTransaction, operation, inTransactionChange); return; } - let inTransactionChange: Boolean = operation.getInTransactionChange(); - let enteringTransaction: boolean = (inTransactionChange == true && operation.hasNullTransactionId()); - if(enteringTransaction) { - Database.currentTransactionId = ++ (Database.lastTransactionId); - } + executeSuccess = await Database.executeOrError(operation, db); + Database.handleExecute(executeSuccess, enteringTransaction, operation, inTransactionChange); + } - let executeSuccess: boolean = await Database.executeOrError(operation, db); + private static handleExecute(executeSuccess: boolean, enteringTransaction: boolean, operation: Operation, inTransactionChange: Boolean) { if(!executeSuccess) { // Revert if needed if(enteringTransaction) { diff --git a/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/operation/BaseReadOperation.ets b/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/operation/BaseReadOperation.ets index ac82656..aaa44e7 100644 --- a/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/operation/BaseReadOperation.ets +++ b/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/operation/BaseReadOperation.ets @@ -40,7 +40,7 @@ export abstract class BaseReadOperation implements Operation { return new SqlCommand(this.getSql(), this.getSqlArguments()); } - public getInTransactionChange(): Boolean { + public getInTransactionChange(): boolean { return this.getBoolean(Constant.PARAM_IN_TRANSACTION_CHANGE); } @@ -60,9 +60,9 @@ export abstract class BaseReadOperation implements Operation { return false; } - private getBoolean(key: string): Boolean { + private getBoolean(key: string): boolean { let value: object = this.getArgument(key); - if(value instanceof Boolean) { + if(typeof value == 'boolean') { return value; } return false; diff --git a/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/operation/Operation.ets b/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/operation/Operation.ets index b6b01f4..a64b815 100644 --- a/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/operation/Operation.ets +++ b/sqflite/ohos/sqflite/src/main/ets/io/flutter/plugins/sqflite/operation/Operation.ets @@ -31,7 +31,7 @@ export interface Operation extends OperationResult { getContinueOnError(): boolean; // Only for execute command, true when entering a transaction, false when exiting - getInTransactionChange(): Boolean; + getInTransactionChange(): boolean; /** * transaction id if any, only for within a transaction -- Gitee From e4fe4131a31001b91d36395264be3852e0582cfd Mon Sep 17 00:00:00 2001 From: SimpleLove520 <1960997571@qq.com> Date: Tue, 26 Mar 2024 15:13:54 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E8=BF=94=E5=9B=9E=E8=A1=8CID?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E5=90=8E=E8=BF=94=E5=9B=9E=E5=BD=B1=E5=93=8D=E7=9A=84=E6=9D=A1?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: SimpleLove520 <1960997571@qq.com> -- Gitee