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,否则会查询失败。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
table | string | 是 | 指定的目标表名。 |
values | ValuesBucket | 是 | 表示要插入到表中的数据行。 |
callback | AsyncCallback | 是 | 指定回调函数。如果操作成功,返回行ID;否则返回-1。 |
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<string> = ['#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%')
}
}