鸿蒙Next如何进行数据库访问

鸿蒙Next开发中如何进行数据库的增删改查操作?官方文档推荐使用哪种数据库访问方式,是否需要额外配置依赖库?对于本地SQLite数据库的操作流程能否详细说明一下,包括表的创建、数据插入和查询等示例代码?另外,鸿蒙Next的数据持久化方案是否支持ORM框架,比如Room或GreenDao?

2 回复

鸿蒙Next访问数据库?简单!用关系型数据库(RDB)API,先建个表,再增删改查。记得用@Entry注解实体类,RdbStore来操作数据。代码一敲,数据到手,稳如老狗!

更多关于鸿蒙Next如何进行数据库访问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,数据库访问主要通过关系型数据库(RDB)对象关系映射(ORM)库实现。以下是核心步骤和示例代码:


1. 关系型数据库(RDB)访问

步骤

  1. 定义数据模型:创建实体类。
  2. 初始化数据库:配置数据库并创建表。
  3. 增删改查操作:通过RdbStore执行SQL语句。

示例代码

import relationalStore from '@ohos.data.relationalStore';

// 1. 定义数据模型
const TABLE_NAME = 'user';
const SQL_CREATE_TABLE = `CREATE TABLE IF NOT EXISTS ${TABLE_NAME} (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)`;

// 2. 初始化数据库
let rdbStore: relationalStore.RdbStore;
const config: relationalStore.StoreConfig = { name: 'test.db' };
relationalStore.getRdbStore(this.context, config, (err, store) => {
  rdbStore = store;
  rdbStore.executeSql(SQL_CREATE_TABLE); // 创建表
});

// 3. 插入数据
const valueBucket = { id: 1, name: 'Alice', age: 25 };
rdbStore.insert(TABLE_NAME, valueBucket);

// 4. 查询数据
const predicates = new relationalStore.RdbPredicates(TABLE_NAME);
predicates.equalTo('name', 'Alice');
rdbStore.query(predicates, ['id', 'name', 'age'], (err, resultSet) => {
  if (resultSet.rowCount > 0) {
    resultSet.goToFirstRow();
    console.log(`Name: ${resultSet.getString(resultSet.getColumnIndex('name'))}`);
  }
});

2. 使用ORM库(简化操作)

鸿蒙推荐使用**@ohos/data.orm**库进行对象映射:

import orm from '@ohos.data.orm';

// 定义实体类
@orm.Entity('user')
class User {
  @orm.Column('id', { primaryKey: true })
  id: number;

  @orm.Column('name')
  name: string;

  @orm.Column('age')
  age: number;
}

// 初始化数据库
const config: orm.StoreConfig = { name: 'test_orm.db' };
const context = orm.Context.getContext('myApp');
await context.openStore(config);

// 插入数据
const user = new User();
user.id = 1;
user.name = 'Bob';
user.age = 30;
await context.insert(user);

// 查询数据
const predicates = orm.Predicates.equal('name', 'Bob');
const users = await context.query(User, predicates);

关键注意事项

  1. 权限配置:在module.json5中声明ohos.permission.DATA_STORAGE权限。
  2. 异步操作:所有数据库操作需使用Promise或回调处理。
  3. 数据加密:可通过encrypt: true配置数据库加密。

通过以上方法,可高效实现鸿蒙Next的数据库访问。具体可参考官方文档

回到顶部