鸿蒙Next开发-通讯录app,数据库实现添加联系人信息(四)

鸿蒙Next开发-通讯录app,数据库实现添加联系人信息(四)

文章目录

1. 前言导读2. 开发步骤3. 具体代码实现全过程4. 运行效果

1. 前言导读

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

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

2. 开发步骤

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

在CreateContactsPage.ets 页面中,导入storeDb

import { storeDb } from '../entryability/EntryAbility';

构建ValuesBucket需要插入的字段 注意:要和建表的字段一一对应

const valuesBucket: relationalStore.ValuesBucket = {

'ct_username': this.ct_username,

'ct_mobile': this.ct_mobile,

'ct_bg_color': getRandomColor()

}

调用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

storeDb.insert('Contacts_Table', valuesBucket, (err: BusinessError, rowId: number) => {

if (err) {

console.error(`------------Failed to insert data. Code:${err.code}, message:${err.message}`);

return

}

promptAction.showToast({

message: '创建成功'

})

router.back({

url: 'pages/Index',

params: {

result_code: 200

}

})

})

3. 具体代码实现全过程

CreateContactsPage.ets 新建联系人页面

import { promptAction, router } from '@kit.ArkUI';

import { relationalStore } from '@kit.ArkData';

import { BusinessError } from '@kit.BasicServicesKit';

import { storeDb } from '../entryability/EntryAbility';

const colors: Array = ['#ff6161', '#ffb120', '#7484fc', '#00cee5']

function getRandomColor():string {

const randomIndex = Math.floor(Math.random() * colors.length);

return colors[randomIndex];

}

@Entry

@Component

struct 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 = {

'ct_username': this.ct_username,

'ct_mobile': this.ct_mobile,

'ct_bg_color': getRandomColor()

}

storeDb.insert('Contacts_Table', valuesBucket, (err: BusinessError, rowId: number) => {

if (err) {

console.error(`------------Failed to insert data. Code:${err.code}, message:${err.message}`);

return

}

promptAction.showToast({

message: '创建成功'

})

router.back({

url: 'pages/Index',

params: {

result_code: 200

}

})

})

} else {

console.error('------------', `Failed store is undefined`);

}

})

}.alignItems(HorizontalAlign.Start)

.width('100%')

.padding(20)

.margin({ top: 50 })

}

.height('100%')

.width('100%')

}

}

4. 运行效果

相关推荐

俞的解释
byt365

俞的解释

07-19 👁️ 8392