建库建表
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 Context
relationalStore.getRdbStore(context, STORE_CONFIG, (err, store) => {
if (err) {
console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`);
return;
}
this.rdbStore = store
if (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, () => {
})