# DataORM-for-RDBMS-CRUD **Repository Path**: scenario-samples/data-orm-for-rdbms-crud ## Basic Information - **Project Name**: DataORM-for-RDBMS-CRUD - **Description**: 【鸿蒙 Harmony Next 示例 代码】使用第三方框架(dataorm)进行关系型数据库的读写操作,涉及到数据库的连接配置、模型定义以及CRUD(创建、读取、更新、删除)操作,本项目是一个使用dataorm的示例,展示如何配置数据库连接、定义模型以及进行数据库操作 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-21 - **Last Updated**: 2025-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用三方框架(dataorm)读写关系型数据库 ## 介绍 使用第三方框架(dataorm)进行关系型数据库的读写操作,涉及到数据库的连接配置、模型定义以及CRUD(创建、读取、更新、删除)操作,本项目是一个使用dataorm的示例,展示如何配置数据库连接、定义模型以及进行数据库操作 ## 效果预览 ![](./images/ScreenShot.gif) ## 约束与限制 1. 本示例仅支持标准系统上运行,支持设备:华为手机。 2. HarmonyOS系统:HarmonyOS NEXT Release及以上。 3. DevEco Studio版本:DevEco Studio NEXT Release及以上。 4. HarmonyOS SDK版本:HarmonyOS NEXT Release SDK及以上。 ## 使用说明 打开后点击奶茶即可查看数据库中存放的奶茶数据,点击低脂查看低脂系列的产品,向下滑动对页面进行刷新 ## 实现思路 1.创建数据源 ``` function createDataSource(): ListDataSource { let goodsListData: ListDataSource = new ListDataSource(); return goodsListData; } ``` 2.从服务器初始化数据 ``` const initDataFromServer = (): void => { let result = new Array(); result = result.concat(goodsInitialList); cacheServerData(result); } ``` 3.缓存服务器数据 ``` async function cacheServerData(items: GoodsListItemType[]): Promise { let goodsDao: BaseDao = await getDao(); for (let item of items) { goodsDao.insert(item); } } ``` 4.获取DAO ``` async function getDao() { let helper: ExampleOpenHelper = new ExampleOpenHelper(getContext(), 'goods.db'); helper.setEntities(GoodsListItemType); let db: Database = await helper.getWritableDb(); let daoSession = new DaoMaster(db).newSession(); let goodsDao: BaseDao = daoSession.getBaseDao(GoodsListItemType); return goodsDao; } ``` 5.刷新数据源,在界面构建中,代码使用了Toggle组件来切换数据源。根据Toggle的状态,会查询并刷新相应的数据。 ``` private refreshDataSource(goodsListData: ListDataSource, result: GoodsListItemType[]) { let length = goodsListData.totalCount(); for (let i = length - 1; i >= 0; i--) { this.goodsListData.deleteData(i); } for (let i = 0; i < result.length; i++) { this.goodsListData.pushData(result[i]); } } ``` 6.构建界面 ``` @Component export default struct GoodsList { @Provide goodsListData: ListDataSource = createDataSource(); private startTouchOffsetY: number = 0; private endTouchOffsetY: number = 0; @State private toggleData: ToggleData = new ToggleData(); aboutToAppear() { initDataFromServer() getDao().then((goodsDao: BaseDao) => { goodsDao.loadAll().then((result: GoodsListItemType[]) => { this.refreshDataSource(this.goodsListData, result); }).catch((error: BusinessError) => { console.error(error.message); }); }); } // 构建界面逻辑 } ``` ## 工程目录 DataORM[entry]/src/main/ets/ |---common |---|---CommonConstants.ets |---entryability |---|---EntryAbility.ets |---entrybackupability |---|---EntryBackupAbility.ets |---pages |---|---ListIndex.ets |---view |---|---GoodsListComponent.ets |---|---PutDownRefreshLayout.ets |---|---TabBarsComponents.ets |---Viewmodel |---|---goodsimg //照片 |---|---GoodsModel.ets |---|---ListDataSours.ets ## 一份简单的问卷反馈 亲爱的Harmony Next开发者,您好!
为了协助您高效开发,提高鸿蒙场景化示例的质量,希望您在浏览或使用后抽空填写一份简单的问卷,我们将会收集您的宝贵意见进行优化:heart: [:arrow_right: **点击此处填写问卷** ](https://wj.qq.com/s2/19042938/95ab/)