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用于管理关系型数据。以下是增删改查的基本操作:

  1. 增(Insert)

    ValuesBucket values = new ValuesBucket();
    values.putString("name", "John");
    long id = relationStore.insert("table_name", values);
  2. 删(Delete)

    DataAbilityPredicates predicates = new DataAbilityPredicates();
    predicates.equalTo("id", 1);
    int deletedRows = relationStore.delete("table_name", predicates);
  3. 改(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);
  4. 查(Query)

    DataAbilityPredicates predicates = new DataAbilityPredicates();
    predicates.equalTo("id", 1);
    ResultSet resultSet = relationStore.query("table_name", null, predicates);

注意:这些操作在模拟器和真机上有效,预览器不支持。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!