fix: 优化数据库操作上层代码
This commit is contained in:
parent
eb6019096d
commit
7b45c1f0f9
1
entry/src/main/ets/config/LogEnum.ets
Normal file
1
entry/src/main/ets/config/LogEnum.ets
Normal file
@ -0,0 +1 @@
|
||||
export const DbTag = '[DBTag]';
|
||||
1
entry/src/main/ets/config/index.ets
Normal file
1
entry/src/main/ets/config/index.ets
Normal file
@ -0,0 +1 @@
|
||||
export * from "./LogEnum";
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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],
|
||||
]);
|
||||
Loading…
x
Reference in New Issue
Block a user