HarmonyOS 鸿蒙Next中如何实现点击按钮就把一条数据插入SQLite数据库?

HarmonyOS 鸿蒙Next中如何实现点击按钮就把一条数据插入SQLite数据库? 官方文档给的例子是在EntryAbility里面操作数据库的,并没有说怎么在page页面操作数据库。菜鸟求大佬解答。

getRdbStore这玩意要传一个context参数,关键是我在page里面拿不到啊
6 回复

建议写个工具类操作数据库

可以在ets中获取Context

private context = getContext(this).getApplicationContext()

更多关于HarmonyOS 鸿蒙Next中如何实现点击按钮就把一条数据插入SQLite数据库?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主您好,你可以在页面中通过一个方法实现插入数据的逻辑实现,通过按钮点击事件调用方法,对于页面获取上下文可以通过

import common from ‘@ohos.app.ability.common’;

private context = getContext(this) as common.UIAbilityContext;

如果获取获取ApplicationContext:可以通过方法getApplicationContext()获取。

采用如下方式,即可获得context

import common from '@ohos.app.ability.common';
private context = getContext(this) as common.UIAbilityContext;

我想到了一个办法,参考郭霖的第一行代码的获取全局Context的做法,在EntryAbility里面写个静态方法获取UIAbility就可以了。

中的globalThis就是全局方法,不需要自己写,

在HarmonyOS鸿蒙Next中,实现点击按钮插入一条数据到SQLite数据库的步骤如下:

  1. 创建数据库帮助类:继承OrmDatabase,定义数据库和表结构。
  2. 定义数据模型:使用@Entity注解标记数据模型类,表示数据库中的表。
  3. 初始化数据库:在应用启动时初始化数据库实例。
  4. 插入数据:在按钮点击事件中,调用insert方法将数据插入数据库。

示例代码:

// 数据模型
@Entity()
export class User {
  @PrimaryKey()
  id: number;

  @ColumnInfo({ name: 'name' })
  name: string;

  @ColumnInfo({ name: 'age' })
  age: number;
}

// 数据库帮助类
@Database({ entities: [User], version: 1 })
export class AppDatabase extends OrmDatabase {
  static async getInstance(context: Context): Promise<AppDatabase> {
    return await OrmDatabase.getDatabase(context, AppDatabase);
  }
}

// 插入数据
async function insertUser(context: Context, user: User) {
  const db = await AppDatabase.getInstance(context);
  await db.getDao(User).insert(user);
}

// 按钮点击事件
Button.onClick(async () => {
  const user = new User();
  user.id = 1;
  user.name = 'John';
  user.age = 30;
  await insertUser(getContext(this), user);
});

确保在config.json中声明数据库权限:

{
  "module": {
    "reqPermissions": [
      {
        "name": "ohos.permission.WRITE_EXTERNAL_STORAGE"
      }
    ]
  }
}

通过这些步骤,可以在鸿蒙Next中实现点击按钮插入数据到SQLite数据库。

回到顶部