HarmonyOS鸿蒙Next中访问本地sqlite数据库的问题

HarmonyOS鸿蒙Next中访问本地sqlite数据库的问题 有个问题请教一下,我有一个数据库文件放在项目rawfile/datadb/p33/p3301.db(有若干编号的数据库文件),我怎么设置路径读进来进行增删改查的管理?学了几天arkts。这些读文件之类的路径把我弄头疼的不知道文件放哪,怎么读进去。还有这些目录都是用来干嘛的。我在app内创建并写入一个文件他在模拟器沙箱什么位置,我如何在电脑上找到应用沙箱实际的路径?谢谢。

4 回复

已解决问题,先通过文件操作把文件copy到沙箱数据库目录再操作。

更多关于HarmonyOS鸿蒙Next中访问本地sqlite数据库的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


请问一下,您的数据库文件是否进行了加密?如何进行文件加密呢?

在HarmonyOS鸿蒙Next中访问本地SQLite数据库,可以通过使用ohos.data.relationalStore模块来实现。该模块提供了关系型数据库的操作接口,支持SQLite数据库的创建、查询、插入、更新和删除等操作。

首先,需要在config.json中声明数据库相关的权限和配置。例如:

{
  "module": {
    "reqPermissions": [
      {
        "name": "ohos.permission.READ_USER_STORAGE",
        "reason": "读取数据库"
      },
      {
        "name": "ohos.permission.WRITE_USER_STORAGE",
        "reason": "写入数据库"
      }
    ]
  }
}

接下来,可以使用RdbStore类来操作数据库。以下是一个简单的示例,展示如何创建数据库、表,并进行数据操作:

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

// 数据库配置
const config = {
  name: 'myDatabase.db',
  securityLevel: relationalStore.SecurityLevel.S1,
  encrypt: false
};

// 表结构
const sqlCreateTable = 'CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)';

// 初始化数据库
relationalStore.getRdbStore(context, config, (err, store) => {
  if (err) {
    console.error('Failed to get RdbStore.', err);
    return;
  }

  store.executeSql(sqlCreateTable, null, (err) => {
    if (err) {
      console.error('Failed to execute SQL.', err);
      return;
    }

    // 插入数据
    const sqlInsert = 'INSERT INTO user (name, age) VALUES (?, ?)';
    store.executeSql(sqlInsert, ['Alice', 25], (err) => {
      if (err) {
        console.error('Failed to insert data.', err);
        return;
      }
    });

    // 查询数据
    const sqlQuery = 'SELECT * FROM user';
    store.query(sqlQuery, null, (err, resultSet) => {
      if (err) {
        console.error('Failed to query data.', err);
        return;
      }
      while (resultSet.goToNextRow()) {
        const id = resultSet.getLong(resultSet.getColumnIndex('id'));
        const name = resultSet.getString(resultSet.getColumnIndex('name'));
        const age = resultSet.getLong(resultSet.getColumnIndex('age'));
        console.log(`id: ${id}, name: ${name}, age: ${age}`);
      }
      resultSet.close();
    });
  });
});

以上代码展示了如何在HarmonyOS鸿蒙Next中创建数据库、表,并进行数据的插入和查询操作。relationalStore模块提供了丰富的API,可以满足大部分数据库操作需求。

在HarmonyOS鸿蒙Next中访问本地SQLite数据库,可以通过DataAbilityDataAbilityHelper来实现。首先,在config.json中声明DataAbility,并指定数据库路径。然后,使用DataAbilityHelper执行SQL操作,如查询、插入、更新等。示例代码:

DataAbilityHelper helper = DataAbilityHelper.creator(getContext());
String uri = "dataability:///com.example.myapp/database/mydb";
ResultSet resultSet = helper.query(Uri.parse(uri), columns, selection, selectionArgs, order);

通过这种方式,可以高效地访问和管理本地SQLite数据库。

回到顶部