鸿蒙Next开辟-通讯录app,数据库实现添加接洽人信息(四) ...

打印 上一主题 下一主题

主题 976|帖子 976|积分 2928

1. 媒介导读

   在上集文章中,已经学习了如何创建数据库,如何建表,这集我们将如何通过数据库实现生存(添加)接洽人信息
  

  • 鸿蒙Next开辟-通讯录app,创建数据库(三):https://blog.csdn.net/jky_yihuangxing/article/details/141207750
2. 开辟步骤

获取到RdbStore后,调用insert()接口插入数据
留意事项:RdbStore是在UIAbility里面初始化话,在其他页面利用RdbStore实例,则需要导出和导入,具体代码在上集中


  • 在CreateContactsPage.ets 页面中,导入storeDb
  1. import { storeDb } from '../entryability/EntryAbility';
复制代码

  • 构建ValuesBucket需要插入的字段
    留意:要和建表的字段一一对应
  1. const valuesBucket: relationalStore.ValuesBucket = {
  2.                 'ct_username': this.ct_username,
  3.                 'ct_mobile': this.ct_mobile,
  4.                 'ct_bg_color': getRandomColor()
  5.               }
复制代码

  • 调用insert()接口插入数据
insert(table: string, values: ValuesBucket, callback: AsyncCallback):void
向目标表中插入一行数据,利用callback异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败。
参数:
参数名范例必填阐明tablestring是指定的目标表名。valuesValuesBucket是表示要插入到表中的数据行。callbackAsyncCallback是指定回调函数。如果操作成功,返回行ID;否则返回-1。 官方文档指南:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-relationalstore-V5#insert
  1. storeDb.insert('Contacts_Table', valuesBucket, (err: BusinessError, rowId: number) => {
  2.                 if (err) {
  3.                   console.error(`------------Failed to insert data. Code:${err.code}, message:${err.message}`);
  4.                   return
  5.                 }
  6.                 promptAction.showToast({
  7.                   message: '创建成功'
  8.                 })
  9.                 router.back({
  10.                   url: 'pages/Index',
  11.                   params: {
  12.                     result_code: 200
  13.                   }
  14.                 })
  15.               })
复制代码
3. 具体代码实现全过程

CreateContactsPage.ets 新建接洽人页面
  1. import { promptAction, router } from '@kit.ArkUI';import { relationalStore } from '@kit.ArkData';import { BusinessError } from '@kit.BasicServicesKit';import { storeDb } from '../entryability/EntryAbility';
  2. const colors: Array<string> = ['#ff6161', '#ffb120', '#7484fc', '#00cee5']function getRandomColor():string {  const randomIndex = Math.floor(Math.random() * colors.length);  return colors[randomIndex];}@Entry@Componentstruct CreateContactsPage {  @State ct_username: string = ''  @State ct_mobile: string = ''  build() {    Column() {      Row() {        Image($r('app.media.img_back')).width(24)        Text('新建接洽人')          .padding({ left: 16 })          .fontSize(18)          .fontWeight(500)      }      .width('100%')      .padding({ left: 16 })      .onClick(() => {        router.back()      })      Column() {        TextInput({ placeholder: '请输入接洽人姓名'})          .copyOption(CopyOptions.LocalDevice)          .onChange((value) => {            this.ct_username = value          })        TextInput({ placeholder: '请输入手机号' })          .type(InputType.PhoneNumber)          .margin({ top: 10 })          .onChange((value) => {            this.ct_mobile = value          })        Button('新建接洽人')          .width('100%')          .margin({ top: 30 })          .onClick(() => {            if (this.ct_username == '' || this.ct_mobile == '') {              promptAction.showToast({                message: '接洽人姓名或手机号不能为空'              })              return            }            if (storeDb !== undefined) {              const valuesBucket: relationalStore.ValuesBucket = {
  3.                 'ct_username': this.ct_username,
  4.                 'ct_mobile': this.ct_mobile,
  5.                 'ct_bg_color': getRandomColor()
  6.               }
  7.               storeDb.insert('Contacts_Table', valuesBucket, (err: BusinessError, rowId: number) => {
  8.                 if (err) {
  9.                   console.error(`------------Failed to insert data. Code:${err.code}, message:${err.message}`);
  10.                   return
  11.                 }
  12.                 promptAction.showToast({
  13.                   message: '创建成功'
  14.                 })
  15.                 router.back({
  16.                   url: 'pages/Index',
  17.                   params: {
  18.                     result_code: 200
  19.                   }
  20.                 })
  21.               })
  22.             } else {              console.error('------------', `Failed store is undefined`);            }          })      }.alignItems(HorizontalAlign.Start)      .width('100%')      .padding(20)      .margin({ top: 50 })    }    .height('100%')    .width('100%')  }}
复制代码
4. 运行结果



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

魏晓东

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表