以下代码使用vsCode+TypeScript编写
1.定义数据查询方法
/**
* 数据表数据查询
* @param tableName 类型:string 查询数据的数据表名称
* @param sqlParam 类型:Array<any> 拼接SQLWHERE条件语句需要的参数信息
* @param selectCol 类型:string 查询结果列(可选参数,参数如果不传值则默认为 * )
*/
SelectData(tableName: string, sqlParam: Array<any> , selectCol?: string) {
this.dataBase.transaction((tx) => {
let selectSql = ' SELECT ';
let sqlWhere = ' WHERE 1=1 ';
sqlParam.forEach(item => {
if (isNumber(item.colValue)) { // 判断值是否为数值类型
sqlWhere += ' AND ' + item.colName + '=' + item.colValue ;
} else if (isString(item.colValue)) { // 判断值是否为字符类型
sqlWhere += ' AND ' + item.colName + '=\'' + item.colValue + '\'' ;
}
});
console.log('selectCol参数值: ' + selectCol);
if (selectCol === undefined) {
selectCol = '*';
}
selectSql += selectCol + ' FROM ' + tableName + sqlWhere;
console.log('查询SQL: ' + selectSql);
// 执行SQL并返回结果
tx.executeSql(selectSql, [], ( tx, result) => {// 成功回调
this.tableStructureInfo.MONEY_USEINFO.MerageFrom(result);
}, (error) => {// 失败回调
console.log('数据库操作失败: ' + error.message);
});
});
}
2.将数据表定义为一个类中的对象,并定义一个将查询结果转数组的MerageFrom方法
/**
* 数据表结构信息
*/
export class TableStructureInfo {
/**
* MONEY_USEINFO 记账信息表
*/
public MONEY_USEINFO: any = {
/**
* 表中列信息
*/
Columns: [
' REC_CREATEOR'
, 'REC_CREATE_TIME'
, 'REC_MODIFIER'
, 'REC_MODIFY_TIME'
, 'SEQ_NO'
, 'MONEY_USE_TIME'
, 'MONEY_UST_TYPE'
, 'AMOUNT'
, 'MONEY_USE_DESC'
, 'BACK1'
, 'BACK2'
, 'BACK3'
, 'BACK4'
, 'BACK5'
, 'BACK6'
, 'BACK7'
, 'BACK8'
, 'BACK9'
, 'BACK10'],
/**
* 结果集
*/
DataTable: [],
Row: {}, // 将row定义为一个对象
/**
* 将查询结果转为一个数组类似DataTable
*/
MerageFrom: (data: any) => {
if (data.rows.length > 0) {
let rowCount = 0;
for (const item of data.rows) {
rowCount++;
console.log('当前为第:' + rowCount + '次循环');
this.MONEY_USEINFO.Row = {}; // 重置对象方便下一次循环从头开始添加对象属性
for (const column of this.MONEY_USEINFO.Columns) {
if (item[column] !== undefined && item[column] !== null) {
// 通过查找当前column在对象中是否存在,如果存在则直接赋值,不存在则会自动新增再赋值
this.MONEY_USEINFO.Row[column] = item[column];
}
}
this.MONEY_USEINFO.DataTable.push( this.MONEY_USEINFO.Row ); // 直接将对象压入数组中
}
console.log('当前DataTable对象:', this.MONEY_USEINFO.DataTable);
}
}
};
}
效果: