HarmonyOS 鸿蒙Next中如何实现点击按钮就把一条数据插入SQLite数据库?
HarmonyOS 鸿蒙Next中如何实现点击按钮就把一条数据插入SQLite数据库? 官方文档给的例子是在EntryAbility里面操作数据库的,并没有说怎么在page页面操作数据库。菜鸟求大佬解答。
getRdbStore这玩意要传一个context参数,关键是我在page里面拿不到啊
6 回复
楼主您好,你可以在页面中通过一个方法实现插入数据的逻辑实现,通过按钮点击事件调用方法,对于页面获取上下文可以通过
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数据库的步骤如下:
- 创建数据库帮助类:继承
OrmDatabase
,定义数据库和表结构。 - 定义数据模型:使用
@Entity
注解标记数据模型类,表示数据库中的表。 - 初始化数据库:在应用启动时初始化数据库实例。
- 插入数据:在按钮点击事件中,调用
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数据库。