HarmonyOS鸿蒙Next中relationstore增删改查(只有模拟器真机看效果,预览器不行)
HarmonyOS鸿蒙Next中relationstore增删改查(只有模拟器真机看效果,预览器不行)
// CartDBUtils.ets
```typescript
import { relationalStore } from '[@kit](/user/kit).ArkData'
import { Context } from '[@kit](/user/kit).AbilityKit';
import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
import {CartModel} from 'feature'
class CartDBUtils{
private rdbStore: relationalStore.RdbStore | undefined
/*初始化数据库
context 上下文对象
tableName 创建的表格名字*/
initCartDB(context:Context,tableName:String) {
const STORE_CONFIG:relationalStore.StoreConfig = {
name: 'xjj.db', // 数据库文件名
securityLevel:relationalStore.SecurityLevel.S1, // 数据库安全等级
};
const SQL_CREATE_TABLE = `CREATE TABLE IF NOT EXISTS ${tableName} (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
GOODS_NAME TEXT NUT NULL,
GOODS_COUNT INTEGER,
GOODS_CHECKED INTEGER,
GOODS_PRICE REAL
)`
relationalStore.getRdbStore(context, STORE_CONFIG, (err, store) => {
if(err) {
console.error(`获取RdbStore失败,code:${err.code},message:${err.message}`);
return;
}
console.info('获取RdbStore成功')
this.rdbStore = store
store.executeSql(SQL_CREATE_TABLE, (error) => {
if (!error) {
console.log(`表${tableName}创建成功`)
} else {
console.log(`表${tableName}创建失败`)
}
})
}
)
}
/*新增数据
tableName 表名
value 添加的数据*/
insert(tableName: string,value: relationalStore.ValuesBucket){
if (this.rdbStore !== undefined) {
this.rdbStore.insert(tableName,value,(err:BusinessError,rewId:number) => {
if (err) {
console.log(`${tableName}添加数据失败,${err.code}-${err.name}-${err.message}`)
return;
}
console.log(`${tableName}添加数据成功,rewId:${rewId}`)
})
}
}
// 删除数据
deleteById(tableName:string,id:number) {
let predicates1 = new relationalStore.RdbPredicates(tableName)
predicates1.equalTo('ID',id);
if (this.rdbStore !== undefined) {
this.rdbStore.delete(predicates1,(err:BusinessError, rows:number) => {
if (err) {
console.log(`${tableName}删除失败,${err.code}-${err.message}`)
return;
}
console.log(`删除成功rows:${rows}`)
})
}
}
// 修改数据
updateById(tableName:string,id:number,value:relationalStore.ValuesBucket) {
let predicates1 = new relationalStore.RdbPredicates(tableName)
predicates1.equalTo('ID',id);
if (this.rdbStore !== undefined) {
this.rdbStore.update(value,predicates1,(err:BusinessError, rows:number) => {
if (err) {
console.log(`${tableName}修改失败,${err.code}-${err.message}`)
return;
}
console.log(`修改成功rows:${rows}`)
})
}
}
// 查询数据
// column 投影列 ['ID','NAME']
async query(column:Array<string>,tableName:string,id?:number) {
let predicates1 = new relationalStore.RdbPredicates(tableName)
if (id) {
predicates1.equalTo('ID',id);
}
let carts:CartModel[] = [];
const resultSet = await (this.rdbStore as relationalStore.RdbStore).query(predicates1,column)
while(resultSet.goToNextRow()) {
let id = resultSet.getDouble(resultSet.getColumnIndex('ID'))
let goods_name = resultSet.getString(resultSet.getColumnIndex('GOODS_NAME'))
let goods_count = resultSet.getLong(resultSet.getColumnIndex('GOODS_COUNT'))
let goods_checked = resultSet.getDouble(resultSet.getColumnIndex('GOODS_CHECKED'))
let goods_price = resultSet.getDouble(resultSet.getColumnIndex('GOODS_PRICE'))
const temp:CartModel = new CartModel()
temp.id = id
temp.goods_name = goods_name
temp.goods_count = goods_count
temp.goods_checked = goods_checked
temp.goods_price = goods_price
carts.push(temp)
}
resultSet.close()
return carts
}
}
const CartDB = new CartDBUtils()
export {CartDB}
// CartModel.ets
```typescript
export class CartModel {
id?: number
goods_name?: string
goods_count?: number
goods_checked?: number
goods_price?: number
}
// 测试页
```typescript
import { relationalStore } from '[@kit](/user/kit).ArkData'
import {CartDB, CartModel} from 'feature'
import { router } from '[@kit](/user/kit).ArkUI'
[@Entry](/user/Entry)
[@Component](/user/Component)
struct CartDBUtils {
[@State](/user/State) goodsName:string = ''
[@State](/user/State) myId:number = 0
[@State](/user/State) count:number = 0
[@State](/user/State) cartData:CartModel[] = []
aboutToAppear(): void {
this.initData()
}
initData = async () => {
const res = await CartDB.query(
['ID','GOODS_NAME','GOODS_COUNT','GOODS_CHECKED','GOODS_PRICE'],
'MYCARDB'
)
this.cartData = res
console.log(`数据库返回结果${JSON.stringify(res)}`)
}
addCart = () =>{
const valueBucket2: relationalStore.ValuesBucket = {
GOODS_NAME: this.goodsName,
GOODS_COUNT: this.count
}
CartDB.insert('MYCARDB',valueBucket2)
}
delCart = (id:number) => {
CartDB.deleteById("MYCARDB",id)
}
updateCart = () => {
const updateColum:relationalStore.ValuesBucket = {
GOODS_COUNT: this.count
}
CartDB.updateById("MYCARDB",this.myId,updateColum)
}
build() {
Column() {
Button('返回')
.onClick(() => {
router.back()
})
TextInput({placeholder:'请输入商品名称', text:$$this.goodsName})
TextInput({placeholder:'请输入商品数量', text:$$this.count})
Button('新增')
.onClick(() => {
this.addCart()
})
TextInput({placeholder:'请输入要修改编号', text:$$this.myId})
TextInput({placeholder:'请输入购买数量', text:$$this.count})
Button('修改')
.onClick(() => {
this.updateCart()
})
List() {
ForEach(this.cartData,(item:CartModel,index:number) => {
ListItem(){
Column(){
Text(`ID:${item.id}`)
Text(`goods_name:${item.goods_name}`)
Text(`goods_count:${item.goods_count}`)
Button('删除')
.onClick(() => {
this.delCart(Number(`${item.id}`))
})
}
}
.width('100%')
.height(120)
.borderRadius(10)
.backgroundColor(Color.Gray)
},(item:CartModel) => item.id?.toString())
}
}
.height('100%')
.width('100%')
}
}
// EntryAbility.ets
onWindowStageCreate(windowStage: window.WindowStage): void {
// 加载数据库
CartDB.initCartDB(this.context, 'MYCARDB')
}
1 回复
更多关于HarmonyOS鸿蒙Next中relationstore增删改查(只有模拟器真机看效果,预览器不行)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,RelationStore
用于管理关系型数据。以下是增删改查的基本操作:
-
增(Insert):
ValuesBucket values = new ValuesBucket(); values.putString("name", "John"); long id = relationStore.insert("table_name", values);
-
删(Delete):
DataAbilityPredicates predicates = new DataAbilityPredicates(); predicates.equalTo("id", 1); int deletedRows = relationStore.delete("table_name", predicates);
-
改(Update):
ValuesBucket values = new ValuesBucket(); values.putString("name", "Jane"); DataAbilityPredicates predicates = new DataAbilityPredicates(); predicates.equalTo("id", 1); int updatedRows = relationStore.update("table_name", values, predicates);
-
查(Query):
DataAbilityPredicates predicates = new DataAbilityPredicates(); predicates.equalTo("id", 1); ResultSet resultSet = relationStore.query("table_name", null, predicates);
注意:这些操作在模拟器和真机上有效,预览器不支持。