建库建表
import { relationalStore } from '@kit.ArkData';export interface TableData {id: number,tagName: string,tagImage: string,tagNumber: number,accountType: number
}function bucket(data: TableData): relationalStore.ValuesBucket {let obj: relationalStore.ValuesBucket = {tagName: data.tagName,tagImage: data.tagImage,tagNumber: data.tagNumber,accountType: data.accountType}return obj
}export default class AccountTagTable {private tableName: string = 'tagTable'private createTable = 'CREATE TABLE IF NOT EXISTS tagTable (id INTEGER PRIMARY KEY AUTOINCREMENT' +', tagName Text, tagImage Text, tagNumber INTEGER, accountType INTEGER)';private rdbStore: relationalStore.RdbStore | undefined = undefined;getRdbStore(callback: Function) {const STORE_CONFIG :relationalStore.StoreConfig= { name: 'Rdb.db', securityLevel: relationalStore.SecurityLevel.S3, allowRebuild: true };let context: Context = getContext(this) as ContextrelationalStore.getRdbStore(context, STORE_CONFIG, (err, store) => { if (err) {console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`);return;}this.rdbStore = storeif (store.version === 0) {store.executeSql(this.createTable); store.version = 1;}callback()});}insert(data: TableData, callback: Function) {const valuesBucket: relationalStore.ValuesBucket = bucket(data)if (this.rdbStore !== undefined) {this.rdbStore.insert(this.tableName, valuesBucket, (err) => {if (err) {console.error(`Insert failed, code is ${err.code}, message is ${err.message}`);return;}callback()})}}delete(data: TableData, callback: Function) {let predicates = new relationalStore.RdbPredicates(this.tableName);predicates.equalTo('id', data.id);if (this.rdbStore !== undefined) {this.rdbStore.delete(predicates, (err) => {if (err) {console.error(`Delete failed, code is ${err.code}, message is ${err.message}`);return;}callback()})}}update(data: TableData, callback: Function) {const valuesBucket: relationalStore.ValuesBucket = bucket(data)let predicates = new relationalStore.RdbPredicates(this.tableName);predicates.equalTo('id', data.id);if (this.rdbStore !== undefined) {this.rdbStore.update(valuesBucket, predicates, (err) => {if (err) {console.error(`Updated failed, code is ${err.code}, message is ${err.message}`);return;}callback()})}}querySql(callback: Function) {if (this.rdbStore !== undefined) {this.rdbStore.querySql('SELECT * FROM tagTable ORDER BY tagNumber ASC', (err, resultSet) => {if (err) {console.error(`Query failed, code is ${err.code}, message is ${err.message}`);return;}const result: TableData[] = []while (resultSet.goToNextRow()) {let tmp: TableData = {id: resultSet.getLong(resultSet.getColumnIndex("id")),tagName: resultSet.getString(resultSet.getColumnIndex("tagName")),tagImage: resultSet.getString(resultSet.getColumnIndex("tagImage")),tagNumber: resultSet.getLong(resultSet.getColumnIndex("tagNumber")),accountType: resultSet.getLong(resultSet.getColumnIndex("accountType"))}result.push(tmp)}callback(result)resultSet.close();})}}backup(callback: Function) {if (this.rdbStore != undefined) {this.rdbStore.backup("Backup.db", (err) => {if (err) {console.error(`Backup failed, code is ${err.code}, message is ${err.message}`);return;}callback()})}}restore(callback: Function) {if (this.rdbStore != undefined) {this.rdbStore.restore('Backup.db', (err) => {console.log('112244')if (err) {console.error(`Restore failed, code is ${err.code}, message is ${err.message}`);return;}callback()})}}
}
使用
import AccountTagTable, { TableData } from '../database/AccountTagTable'@Entry
@Component
struct Index {private rdb = new AccountTagTable()@State tableData: TableData = {id: -1,tagName: '',tagImage: '',tagNumber: 1,accountType: 0}aboutToAppear(): void {this.rdb.getRdbStore(() => {this.rdb.querySql((result: TableData[]) => {})})}build() {}
}
this.rdb.insert(this.tableData, () => {})
this.rdb.delete(this.tableData, () => {})
this.rdb.update(this.tableData, () => {})