fix: 优化数据库操作上层代码

This commit is contained in:
wangzhongjie 2025-03-07 11:54:23 +08:00
parent eb6019096d
commit 7b45c1f0f9
6 changed files with 201 additions and 61 deletions

View File

@ -0,0 +1 @@
export const DbTag = '[DBTag]';

View File

@ -0,0 +1 @@
export * from "./LogEnum";

View File

@ -31,7 +31,7 @@ struct Index {
this.deviceName = value.getLocalDeviceInfoSync().deviceName
this.deviceNo = value.getLocalDeviceInfoSync().deviceId.substring(0, 10).toUpperCase()
this.ip = 'MAC-' + this.deviceNo
AppStorage.setOrCreate('deviceNo', 'MAC-' + this.deviceNo)
AppStorage.SetOrCreate('deviceNo', 'MAC-' + this.deviceNo)
});
} catch (error) {

View File

@ -1,6 +1,7 @@
import relationalStore from '@ohos.data.relationalStore'
import common from '@ohos.app.ability.common'
import { BusinessError } from '@ohos.base'
import { DbTag } from "../config"
export interface ColumnInfo {
name: string,
@ -29,7 +30,7 @@ class DbUtils {
console.info("db rdbStore init success")
resolve()
})
.catch((err: any) => {
.catch((err: BusinessError) => {
console.error(`db rdbStore init fail reason:${err}`);
reject(err)
})
@ -46,7 +47,7 @@ class DbUtils {
console.info("sql createTable success")
resolve()
})
.catch((err) => {
.catch((err: BusinessError) => {
console.error(`sql createTable fail err:${JSON.stringify(err)}`);
reject(err)
})
@ -76,7 +77,7 @@ class DbUtils {
if (this.rdbStore) {
this.rdbStore?.executeSql(sql).then(() => {
resolve("")
}).catch((err) => {
}).catch((err: BusinessError) => {
reject(err)
})
} else {
@ -86,7 +87,7 @@ class DbUtils {
}
// 插入数据
insertData(tableName: string, obj: any): Promise<number> {
insertData(tableName: string, obj: ESObject): Promise<number> {
return new Promise((resolve, reject) => {
if (this.rdbStore) {
this.rdbStore?.insert(tableName, obj, (err, res) => {
@ -104,6 +105,19 @@ class DbUtils {
})
}
// 根据表名删除表
deleteByName(tableName: string): Promise<boolean> {
return new Promise((resolve, reject) => {
const SQL = `DELETE FROM ${tableName};`
this.executeSql(SQL).then(res => {
console.log(DbTag, "删除表成功!表名:", tableName)
resolve(true)
}).catch((err: BusinessError) => {
console.log(DbTag, "删除表失败!表名:", tableName, "错误信息:", JSON.stringify(err))
reject(false)
})
})
}
// 插入表数据
// insertData(tableName: string, obj: object, columns: ColumnInfo[]): Promise<number> {
@ -123,9 +137,9 @@ class DbUtils {
resolve(null)
} else {
res.goToNextRow()
resolve(res.getLong(0) as unknown as T)
resolve(res.getLong(0) as T)
}
}).catch((err) => {
}).catch((err: BusinessError) => {
console.error(`sql queryCount fail err:${JSON.stringify(err)}`);
reject(err)
})
@ -199,7 +213,7 @@ class DbUtils {
obj[info.name] = val;
});
// 3.3.将对象填入结果数组
arr.push(obj as unknown as T); // 将 obj 断言为 T 类型
arr.push(obj as T); // 将 obj 断言为 T 类型
}
return arr;
}

View File

@ -1,13 +1,91 @@
import DB from '../DbSql';
import { TableDefinition, User } from '../../model';
import DB, { ColumnInfo, ColumnType } from '../DbSql';
import { ParameterPlatform } from './Relationship';
import { BusinessError } from '@ohos.base';
// 建表操作
export async function initTable() {
// const keys = Object.keys(ParameterPlatform);
// for (const key of keys) {
// await DB.executeSql(ParameterPlatform[key].sqlCreate);
// }
export async function InitTable() {
Object.keys(ParameterPlatform).forEach(async (item) => {
await DB.executeSql(ParameterPlatform[MA_MARKRULE]);
await DB.executeSql(ParameterPlatform[item].sqlCreate);
});
}
// 插表操作
export function SqlInsertTable(tableName: string, data: Array<User>, delFlag = true): Promise<boolean> {
return new Promise((resolve, reject) => {
data.forEach((element, index) => {
element.id = !delFlag ? `${index + data.length}` : `${index}`
})
DB.clearTable(tableName).then((res) => {
const columns = Object.keys(data[0]).join(', ');
const values = data
.map((item) => {
const rowValues = Object.values(item)
.map((value: string | number) => (typeof value === 'string' ? `'${value}'` : value))
return `(${rowValues})`;
})
.join(', ');
let INSERT_SQL = "INSERT INTO " + tableName
+ " (" + columns + ") VALUES " + values
DB.executeSql(INSERT_SQL).then(() => {
console.log('sql insert,', res, 'tableName', tableName)
resolve(true)
}).catch((err: BusinessError) => {
console.log('sql insert err,', JSON.stringify(err), 'tableName', tableName)
reject(err)
})
})
})
}
// 参数平台
// TODO 后续废弃这个方法,直接调用SqlInsertTable
// 依据数组和表名更新sql表
export function UpdateTableByArray(tableName: string, arr: Array<User>): Promise<boolean> {
return SqlInsertTable(tableName, arr)
}
//依据表名同步获取数据
export async function GetSyncData(tableName: string): Promise<boolean> {
return new Promise((resolve, reject) => {
const columns: ColumnInfo[] = ParameterPlatform[tableName].columns.map((res: string) => {
return {
name: res,
columnName: res,
type: ColumnType.STRING
} as ColumnInfo
})
// TODO 需要完善此处类型
DB.queryListBySql<ESObject>(`select * from ${tableName}`, columns).then(() => {
resolve(true)
}).catch((err: BusinessError) => {
reject(err)
})
})
}
// TODO 后续废弃这个方法,直接调用DB.deleteByName
// 删除表
export async function DeleteSyncTable(tableName: string): Promise<boolean> {
return new Promise((resolve, reject) => {
DB.deleteByName(tableName).then(() => {
resolve(true)
}).catch(() => {
reject(false)
})
})
}

View File

@ -26,51 +26,97 @@ import {
} from './TableMessage';
export const ParameterPlatform: TableMapType = {
MA_MARKRULE: MA_MARKRULE,
MA_SYSTEMPARM: MA_SYSTEMPARM,
MA_MAP_COLLECT: MA_MAP_COLLECT,
MA_MAP_COLLECT_SHAPE: MA_MAP_COLLECT_SHAPE,
MA_MAP_ITEMCLASS: MA_MAP_ITEMCLASS,
MA_MAP_POINT: MA_MAP_POINT,
MA_MAP_POINT_ITEM: MA_MAP_POINT_ITEM,
MA_MAP_ROAD: MA_MAP_ROAD,
MA_MAP_ROAD_LANE: MA_MAP_ROAD_LANE,
MAP_SUBITEM: MA_MAP_SUBITEM,
MA_MAP_SUBITEM: MA_MAP_SUBITEM,
MA_SYSSET: MA_SYSSET,
ES_CARINFO: ES_CARINFO,
ES_EXAMPOINTDETAIL: ES_EXAMPOINTDETAIL,
MA_MARKRULESET: MA_MARKRULESET,
MA_CDSBINFO: MA_CDSBINFO,
MA_ITEMINFO: MA_ITEMINFO,
MA_T_CARPARMSET: MA_T_CARPARMSET,
ES_CAR_VIDEO_PARAMETER: ES_CAR_VIDEO_PARAMETER,
USER: USER,
USERLIST: USERLIST,
IpConfigTable: IpConfigTable,
DeviceInfoTable: DeviceInfoTable,
CommonConstants: accountTable
}
// export const ParameterPlatform: TableMapType = {
// MA_MARKRULE: MA_MARKRULE,
// MA_SYSTEMPARM: MA_SYSTEMPARM,
// MA_MAP_COLLECT: MA_MAP_COLLECT,
// MA_MAP_COLLECT_SHAPE: MA_MAP_COLLECT_SHAPE,
// MA_MAP_ITEMCLASS: MA_MAP_ITEMCLASS,
// MA_MAP_POINT: MA_MAP_POINT,
// MA_MAP_POINT_ITEM: MA_MAP_POINT_ITEM,
// MA_MAP_ROAD: MA_MAP_ROAD,
// MA_MAP_ROAD_LANE: MA_MAP_ROAD_LANE,
// MAP_SUBITEM: MA_MAP_SUBITEM,
// MA_MAP_SUBITEM: MA_MAP_SUBITEM,
// MA_SYSSET: MA_SYSSET,
// ES_CARINFO: ES_CARINFO,
// ES_EXAMPOINTDETAIL: ES_EXAMPOINTDETAIL,
// MA_MARKRULESET: MA_MARKRULESET,
// MA_CDSBINFO: MA_CDSBINFO,
// MA_ITEMINFO: MA_ITEMINFO,
// MA_T_CARPARMSET: MA_T_CARPARMSET,
// ES_CAR_VIDEO_PARAMETER: ES_CAR_VIDEO_PARAMETER,
// USER: USER,
// USERLIST: USERLIST,
// IpConfigTable: IpConfigTable,
// DeviceInfoTable: DeviceInfoTable,
// CommonConstants: accountTable
// }
export const ParameterPlatform = new Map([
['MA_MARKRULE', MA_MARKRULE],
['MA_SYSTEMPARM', MA_SYSTEMPARM],
['MA_MAP_COLLECT', MA_MAP_COLLECT],
['MA_MAP_COLLECT_SHAPE', MA_MAP_COLLECT_SHAPE],
['MA_MAP_ITEMCLASS', MA_MAP_ITEMCLASS],
['MA_MAP_POINT', MA_MAP_POINT],
['MA_MAP_POINT_ITEM', MA_MAP_POINT_ITEM],
['MA_MAP_ROAD', MA_MAP_ROAD],
['MA_MAP_ROAD_LANE', MA_MAP_ROAD_LANE],
['MAP_SUBITEM', MA_MAP_SUBITEM],
['MA_MAP_SUBITEM', MA_MAP_SUBITEM],
['MA_SYSSET', MA_SYSSET],
['ES_CARINFO', ES_CARINFO],
['ES_EXAMPOINTDETAIL', ES_EXAMPOINTDETAIL],
['MA_MARKRULESET', MA_MARKRULESET],
['MA_CDSBINFO', MA_CDSBINFO],
['MA_ITEMINFO', MA_ITEMINFO],
['MA_T_CARPARMSET', MA_T_CARPARMSET],
['ES_CAR_VIDEO_PARAMETER', ES_CAR_VIDEO_PARAMETER],
['USER', USER],
['USERLIST', USERLIST],
['IpConfigTable', IpConfigTable],
['DeviceInfoTable', DeviceInfoTable],
['CommonConstants', accountTable]
]);
export const CenterMap: CenterTableMapType = {
ItemInfo: MA_ITEMINFO,
MarkRule: MA_MARKRULE,
SystemParm: MA_SYSTEMPARM,
mapCollectList: MA_MAP_COLLECT,
mapCollectshapeList: MA_MAP_COLLECT_SHAPE,
Map_Collect: MA_MAP_COLLECT,
Map_Collect_Shape: MA_MAP_COLLECT_SHAPE,
Map_ItemClass: MA_MAP_ITEMCLASS,
Map_Point: MA_MAP_POINT,
Map_Point_Item: MA_MAP_POINT_ITEM,
Map_Road: MA_MAP_ROAD,
Map_Road_Lane: MA_MAP_ROAD_LANE,
Map_SubItem: MA_MAP_SUBITEM,
Sysset: MA_SYSSET,
CarInfo: ES_CARINFO,
MarkRuleSet: MA_MARKRULE,
Cdsbinfo: MA_CDSBINFO,
T_CarParmSet: MA_T_CARPARMSET,
}
// export const CenterMap: CenterTableMapType = {
// ItemInfo: MA_ITEMINFO,
// MarkRule: MA_MARKRULE,
// SystemParm: MA_SYSTEMPARM,
// mapCollectList: MA_MAP_COLLECT,
// mapCollectshapeList: MA_MAP_COLLECT_SHAPE,
// Map_Collect: MA_MAP_COLLECT,
// Map_Collect_Shape: MA_MAP_COLLECT_SHAPE,
// Map_ItemClass: MA_MAP_ITEMCLASS,
// Map_Point: MA_MAP_POINT,
// Map_Point_Item: MA_MAP_POINT_ITEM,
// Map_Road: MA_MAP_ROAD,
// Map_Road_Lane: MA_MAP_ROAD_LANE,
// Map_SubItem: MA_MAP_SUBITEM,
// Sysset: MA_SYSSET,
// CarInfo: ES_CARINFO,
// MarkRuleSet: MA_MARKRULE,
// Cdsbinfo: MA_CDSBINFO,
// T_CarParmSet: MA_T_CARPARMSET,
// }
export const CenterMap = new Map([
['ItemInfo', MA_ITEMINFO],
['MarkRule', MA_MARKRULE],
['SystemParm', MA_SYSTEMPARM],
['mapCollectList', MA_MAP_COLLECT],
['mapCollectshapeList', MA_MAP_COLLECT_SHAPE],
['Map_Collect', MA_MAP_COLLECT],
['Map_Collect_Shape', MA_MAP_COLLECT_SHAPE],
['Map_ItemClass', MA_MAP_ITEMCLASS],
['Map_Point', MA_MAP_POINT],
['Map_Point_Item', MA_MAP_POINT_ITEM],
['Map_Road', MA_MAP_ROAD],
['Map_Road_Lane', MA_MAP_ROAD_LANE],
['Map_SubItem', MA_MAP_SUBITEM],
['Sysset', MA_SYSSET],
['CarInfo', ES_CARINFO],
['MarkRuleSet', MA_MARKRULE],
['Cdsbinfo', MA_CDSBINFO],
['T_CarParmSet', MA_T_CARPARMSET],
]);