鸿蒙(HarmonyOS)应用开发——健康生活应用(4)

发布时间:2024-12-28 01:22

《健康早餐全攻略》:实用健康生活方式应用 #生活技巧# #健康生活方式# #健康生活方式书籍# #健康生活方式应用#

 

  健康生活应用参考了黑马程序员实战案例https://www.bilibili.com/video/BV1Sa4y1Z7B1?p=50&vd_source=49f2a8575dc8ef2586b13f73d3ac1808

鸿蒙应用开发实战:深入饮食记录与个人信息管理功能

一、引言

在健康应用中,饮食记录和个人信息管理是提升用户体验的关键。本文将深入探讨如何在鸿蒙应用中实现这些功能,特别是数据库层面的操作。

二、饮食记录功能实现

1、功能概述

用户可以通过饮食记录功能,便捷地记录每日饮食摄入情况,根据摄入情况来更新渲染页面。

2、数据库操作

在RecordService类中,我们实现了数据库的基本操作,包括新增记录insert、删除记录deleteById和查询记录queryRecordByDate。

新增记录:insert方法接收记录类型ID、记录项ID和数量,创建时间默认为当前时间。删除记录:deleteById方法根据记录ID删除对应的饮食记录。查询记录:queryRecordByDate方法根据给定日期查询当天的所有饮食记录。

三、数据库模型实现

1、RecordModel 类

RecordModel类负责与数据库进行交互,包括建表、插入、删除和查询操作。

建表语句:getCreateTableSql和getCreateTableSql1方法返回建表SQL语句。插入操作:insert和insert1方法将记录或个人信息插入到对应的表中。删除操作:deleteById和deleteById1方法根据ID删除记录。查询操作:listByDate和listByDate1方法根据日期查询记录。 2、数据库表创建

数据库表的创建是通过执行相应的SQL语句完成的,例如CREATE_TABLE_SQL和CREATE_USER_PROFILES_TABLE_SQL。

四、代码实现示例

1、数据库操作服务逻辑

在RecordService类中,我们通过RecordModel与数据库进行交互。

class RecordService { insert(typeId: number, itemId: number, amount: number): Promise<number> { let createTime = DateUtil.getCurrentTime(); // 获取当前时间 return recordModel.insert({typeId, itemId, amount, createTime}); } deleteById(id: number): Promise<number> { return recordModel.deleteById(id); } // 省略其他数据库操作方法... }

/**

import relationalStore from '@ohos.data.relationalStore'

import { ColumnInfo, ColumnType } from '../common/bean/ColumnInfo'

import RecordPO from '../common/bean/RecordPO'

import DbUtil from '../common/utils/DbUtil'

const CREATE_TABLE_SQL: string = `

CREATE TABLE IF NOT EXISTS record (

id INTEGER PRIMARY KEY AUTOINCREMENT,

type_id INTEGER NOT NULL,

item_id INTEGER NOT NULL,

amount DOUBLE NOT NULL,

create_time INTEGER NOT NULL

)

`

//创建第二个表,用来存储编辑资料的数据,实现持久化。

const CREATE_USER_PROFILES_TABLE_SQL:string = `

CREATE TABLE IF NOT EXISTS user_profiles (

id INTEGER PRIMARY KEY AUTOINCREMENT,

nickname TEXT NOT NULL,

gender TEXT NOT NULL,

location TEXT NOT NULL,

createtime INTEGER NOT NULL

)

`;

//表1

const COLUMNS: ColumnInfo[] = [

{name: 'id', columnName: 'id', type: ColumnType.LONG},

{name: 'typeId', columnName: 'type_id', type: ColumnType.LONG},

{name: 'itemId', columnName: 'item_id', type: ColumnType.LONG},

{name: 'amount', columnName: 'amount', type: ColumnType.DOUBLE},

{name: 'createTime', columnName: 'create_time', type: ColumnType.LONG}

]

//表2

const COLUMNS1: ColumnInfo[] = [

{name: 'id1', columnName: 'id1', type: ColumnType.LONG},

{name: 'nickName', columnName: 'nickname', type: ColumnType.STRING},

{name: 'Gender', columnName: 'gender', type: ColumnType.STRING},

{name: 'Location', columnName: 'location', type: ColumnType.STRING},

{name: 'createTime', columnName: 'createtime', type: ColumnType.LONG}

]

//表1

const TABLE_NAME = 'record'

const ID_COLUMN = 'id'

const DATE_COLUMN = 'create_time'

//表2

const TABLE_NAME1 = 'record1'

const ID_COLUMN1 = 'id1'

const DATE_COLUMN1 = 'createtime'

class RecordModel {

//表1

getCreateTableSql(): string {

return CREATE_TABLE_SQL

}

//表2

getCreateTableSql1():string{

return CREATE_USER_PROFILES_TABLE_SQL;

}

//表1

insert(record: RecordPO): Promise<number>{

return DbUtil.insert(TABLE_NAME, record, COLUMNS)

}

//表2

insert1(record1: RecordPO): Promise<number>{

return DbUtil.insert(TABLE_NAME1, record1, COLUMNS1)

}

//表1

deleteById(id: number): Promise<number>{

// 1.删除条件

let predicates = new relationalStore.RdbPredicates(TABLE_NAME)

predicates.equalTo(ID_COLUMN, id)

// 2.删除

return DbUtil.delete(predicates)

}

//表2

deleteById1(id1: number): Promise<number>{

// 1.删除条件

let predicates = new relationalStore.RdbPredicates(TABLE_NAME1)

predicates.equalTo(ID_COLUMN1, id1)

// 2.删除

return DbUtil.delete(predicates)

}

//表1

listByDate(date: number): Promise<RecordPO[]>{

// 1.查询条件

let predicates = new relationalStore.RdbPredicates(TABLE_NAME)

predicates.equalTo(DATE_COLUMN, date)

// 2.查询

return DbUtil.queryForList(predicates, COLUMNS)

}

//表2

listByDate1(date: number): Promise<RecordPO[]>{

// 1.查询条件

let predicates = new relationalStore.RdbPredicates(TABLE_NAME1)

predicates.equalTo(DATE_COLUMN1, date)

// 2.查询

return DbUtil.queryForList(predicates, COLUMNS1)

}

// 新增表 2 的更新方法

// updateUserProfiles(predicates: relationalStore.RdbPredicates, updatedValues: { nickname: string, gender: string, location: string }): Promise<void> {

// return DbUtil.update(TABLE_NAME1, predicates, updatedValues);

// }

}

let recordModel = new RecordModel()

export default recordModel as RecordModel

五、结论

本文详细介绍了如何在鸿蒙应用中实现饮食记录和个人信息管理功能,特别是数据库层面的操作。通过RecordService和RecordModel类的实现,我们展示了数据的增删改查操作,并在ItemIndex组件中展示了如何与用户交互。

网址:鸿蒙(HarmonyOS)应用开发——健康生活应用(4) https://www.yuejiaxmz.com/news/view/588401

相关内容

鸿蒙HarmonyOS应用开发
鸿蒙应用
鸿蒙应用开发教程第02期:完整开发流程,速戳!
用 HarmonyOS ArkUI 来开发一个健康饮食应用
便捷生活场景再扩张!叮咚买菜启动鸿蒙原生应用开发
便捷生活场景再扩张!叮咚买菜启动鸿蒙原生应用开发
鸿蒙生态在福建走出加速度,近350款原生应用上架驱动数字化转型
你常用的金融App全都有!超400款金融理财应用已上架鸿蒙原生版
多款智能家居App已上架原生鸿蒙应用市场
180余款出行导航应用上架纯血鸿蒙应用市场,包你出行无忧!

随便看看