From 0ceb04f265bd8d28838b75a9b9e444d7f743fb88 Mon Sep 17 00:00:00 2001 From: SimpleLove520 <1960997571@qq.com> Date: Tue, 27 Feb 2024 18:05:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= 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 | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 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 fab17a7..475f49c 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 @@ -219,6 +219,7 @@ export class Database { let results: Map = new Map(); let rows: Array> = new Array>(); let columns: Array | null = null; + let valuesType: Array | null = null; let columnCount: number = 0; // resultSet是一个数据集合得游标,默认值想第-1个记录,有效的数据从0开始 @@ -227,14 +228,19 @@ export class Database { columnCount = resultSet.columnCount; columns = new Array(); rows = new Array>(); + valuesType = new Array(); + let data: Record = resultSet.getRow() as Record; for(let i = 0; i < columnCount; i++) { - columns.push(resultSet.getColumnName(i)); + let columnName = resultSet.getColumnName(i); + columns.push(columnName); + let type: string = typeof data[columnName]; + valuesType!.push(type); } results.set(Constant.PARAM_COLUMNS, columns); results.set(Constant.PARAM_ROWS, rows); } - let row = Database.cursorRowToList(resultSet, columnCount); + let row = Database.cursorRowToList(resultSet, columnCount, valuesType!, columns!); rows.push(row); if(cursorPageSize != null) { if(rows.length >= cursorPageSize) { @@ -249,29 +255,27 @@ export class Database { return true; } - static cursorRowToList(cursor: relationalStore.ResultSet, length: number): Array { + static cursorRowToList(cursor: relationalStore.ResultSet, length: number, valuesType: Array, keys: Array): Array { let list = new Array(); for(let i = 0; i < length; i++) { - let value: Object = Database.cursorValue(cursor, i); - // let value: Object = 'cursorValue(cursor, i);' - // if(Debug.EXTRA_LOGV) { - // String type = null; - // if(value != null) { - // if(value.getClass().isArray()) { - // type = "array(" + value.getClass().GetComponentType().getName() + ")"; - // } else { - // type = value.getClass().getName(); - // } - // } - // Log.d(TAG, "column " + i + "" + cursor.getType(i) + ": " + value + (type == null ? "" : "(" + type + ")")); - // } + let value: Object = Database.cursorValue(cursor, i, valuesType, keys); list.push(value); } return list; } - static cursorValue(cursor: relationalStore.ResultSet, index: number): string { + static cursorValue(cursor: relationalStore.ResultSet, index: number, valuesType: Array, keys: Array): Object { + if (valuesType.length >= index) { + let type: string = valuesType[index]; + if (type === 'number') { + return cursor.getDouble(cursor.getColumnIndex(keys[index])); + }else if (type === 'string') { + return cursor.getString(cursor.getColumnIndex(keys[index])); + }else if (type === 'Uint8Array') { + return cursor.getBlob(cursor.getColumnIndex(keys[index])); + } + } return cursor.getString(index); } -- Gitee