介绍
本实例通过列表场景实例讲解,介绍在TaskPool线程中操作关系型数据库的方法,涵盖单条插入、批量插入、删除和查询操作。
效果图预览
使用说明
1.进入页面有insert(单条数据插入)、batch insert(批量数据插入)、query(查询操作)三个按钮,点击query按钮后列表数据会从数据库更新,列表每条后面都有删除按钮,可以从数据库删除数据。
实现思路
1.首先,构建一个关系型数据库并封装数据库操作方法涉及几个关键步骤。
通过getRdbStore方法初始化一个关系型数据库,用户可以根据STORE_CONFIG配置RdbStore的参数,使用Promise异步回调。
// 初始化数据库
public async initRdbStore(context: common.Context): Promise<void> {
this.rdbStore = await rdb.getRdbStore(context, STORE_CONFIG);
await this.createTable();
}
●使用executeSql接口初始化数据库表结构和相关数据。
// 创建数据库表
private async createTable(): Promise<void> {
await this.rdbStore.executeSql(SQL_CREATE_TABLE)
}
●封装数据库操作方法分别为数据插入、数据删除和数据查询。
// 单条数据插入数据库
public async insertData(context: common.Context, Contact: Contact): Promise<void> {
let value1 = Contact.name;
let value2 = Contact.phone;
const valueBucket: ValuesBucket = {
'name': value1,
'phone': value2
}
if (this.rdbStore != undefined) {
let ret = await this.rdbStore.insert(TABLE_NAME, valueBucket, rdb.ConflictResolution.ON_CONFLICT_REPLACE)
}
}
// 批量插入数据库
public async batchInsertData(context: common.Context, array: Array<Contact>): Promise<void> {
let valueBuckets: Array<ValuesBucket> = [];
for (let index = 0; index < array.length; index++) {
let Contact = array[index] as Contact;
let value1 = Contact.name;
let value2 = Contact.phone;
const valueBucket: ValuesBucket = {
'name': value1,
'phone': value2
}
valueBuckets.push(valueBucket);
}
if (this.rdbStore != undefined) {
let ret = await this.rdbStore.batchInsert(TABLE_N