HarmonyOS 鸿蒙Next contain即时查询数据库数据
HarmonyOS 鸿蒙Next contain即时查询数据库数据
/*这是Mainpage*/
Row() {
Search({
value: this.searchText,
placeholder: CommonConstants.SEARCH_TEXT,
controller: this.searchController
})
.width(CommonConstants.FULL_WIDTH)
.borderRadius($r('app.float.radius_size_M'))
.borderWidth($r('app.float.border_size_S'))
.borderColor($r('app.color.border_color'))
.placeholderFont({ size: $r('app.float.font_size_M') })
.textFont({ size: $r('app.float.font_size_M') })
.backgroundColor(Color.White)
.onChange((searchValue: string) => {
this.searchText = searchValue;
if (searchValue === '') {
this.AccountTable.query('', (result: AccountData[]) => {
this.accounts = result;
}, true);
} else {
this.AccountTable.query(String(searchValue), (result: AccountData[]) => {
this.accounts = result;
}, false);
}
})
.onSubmit((searchValue: string) => {
if (searchValue === '') {
this.AccountTable.query('', (result: AccountData[]) => {
this.accounts = result;
}, true);
} else {
this.AccountTable.query(String(searchValue), (result: AccountData[]) => {
this.accounts = result;
}, false);
}
})
}
.width(CommonConstants.FULL_WIDTH)
.padding({ left: $r('app.float.edge_size_M'), right: $r('app.float.edge_size_M') })
.margin({ top: $r('app.float.edge_size_S'), bottom: $r('app.float.edge_size_S') })
/这是query模块/
query(barcodeType: string, callback: Function, isAll: boolean = true) {
let predicates = new relationalStore.RdbPredicates(CommonConstants.ACCOUNT_TABLE.tableName);
if (!isAll) {
predicates.contains('barcodeType', barcodeType);
}
this.accountTable.query(predicates, (resultSet: relationalStore.ResultSet) => {
let count: number = resultSet.rowCount;
if (count === 0 || typeof count === 'string') {
console.log(`${CommonConstants.TABLE_TAG}` + 'Query no results!');
callback([]);
} else {
resultSet.goToFirstRow();
const result: AccountData[] = [];
for (let i = 0; i < count; i++) {
let tmp: AccountData = {
id: 0, accountType: 0, typeText: '', barcodeText: '', amount: 0
};
tmp.id = resultSet.getDouble(resultSet.getColumnIndex('id'));
tmp.accountType = resultSet.getDouble(resultSet.getColumnIndex('accountType'));
tmp.typeText = resultSet.getString(resultSet.getColumnIndex('typeText'));
tmp.barcodeText = resultSet.getString(resultSet.getColumnIndex('barcodeText'));
tmp.amount = resultSet.getDouble(resultSet.getColumnIndex('amount'));
result[i] = tmp;
resultSet.goToNextRow();
}
callback(result);
}
});
}
更多关于HarmonyOS 鸿蒙Next contain即时查询数据库数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
query(barcodeText: string, callback: Function, isAll: boolean = true) {
let predicates = new relationalStore.RdbPredicates(CommonConstants.ACCOUNT_TABLE.tableName);
if (!isAll) {
predicates.contains('barcodeText', barcodeText);
}
}
更多关于HarmonyOS 鸿蒙Next contain即时查询数据库数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
已查出来,是搞错数据库的标题了barcodeText,谢谢
HarmonyOS鸿蒙Next中的即时查询数据库数据功能主要依赖于其分布式数据管理能力。鸿蒙系统通过分布式数据服务(Distributed Data Service, DDS)实现跨设备的数据同步与共享。开发者可以使用鸿蒙提供的API进行数据查询,系统会自动处理数据的分布式存储和查询优化。
在鸿蒙Next中,数据查询可以通过DataAbility
或DataShare
来实现。DataAbility
是鸿蒙中用于数据访问的抽象层,开发者可以通过定义URI来访问不同的数据源。DataShare
则是一个轻量级的数据共享框架,适用于跨应用的数据访问。
即时查询的实现通常依赖于数据库的索引和缓存机制。鸿蒙系统支持多种数据库类型,包括关系型数据库(如SQLite)和NoSQL数据库(如LiteOS的KV存储)。开发者可以根据需要选择合适的数据库类型,并通过SQL语句或API进行数据查询。
鸿蒙Next还提供了数据变更通知机制,当数据库中的数据发生变化时,系统会通知相关应用,从而实现数据的实时更新。开发者可以通过注册数据观察者(DataObserver)来监听数据变化,并在数据变化时触发相应的回调函数。
总的来说,HarmonyOS鸿蒙Next通过分布式数据管理和高效的数据查询机制,实现了即时查询数据库数据的功能,确保了数据的实时性和一致性。