HarmonyOS鸿蒙Next中ArkWeb组件设置databaseAccess权限后如何在web页面访问数据库?

HarmonyOS鸿蒙Next中ArkWeb组件设置databaseAccess权限后如何在web页面访问数据库? ArkWeb 组件有以下可启用的配置:

databaseAccess

databaseAccess(databaseAccess: boolean)


设置是否开启数据库存储 API 权限,默认不开启。

**系统能力:** SystemCapability.Web.Webview.Core

请问这个设置之后,是意思 web 可以直接访问数据库了吗?那要怎么访问呢?
3 回复

不是,这个是给H5页面赋权,也就是说如果H5页面涉及WebSQL、本地存储和IndexedDB等操作,如果无databaseAccess权限赋权,上述操作都无法执行

类似的还有fileAccess, imageAccess

更多关于HarmonyOS鸿蒙Next中ArkWeb组件设置databaseAccess权限后如何在web页面访问数据库?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,ArkWeb组件设置databaseAccess权限后,可以通过JavaScript在web页面中访问数据库。具体步骤如下:

  1. 配置权限:在应用的config.json文件中,确保ArkWeb组件已启用databaseAccess权限。
{
  "module": {
    "abilities": [
      {
        "name": ".MainAbility",
        "permissions": [
          "ohos.permission.DATABASE_ACCESS"
        ]
      }
    ]
  }
}
  1. 创建数据库:在应用中创建一个本地数据库,并确保ArkWeb组件可以访问该数据库。

  2. 在Web页面中访问数据库:通过JavaScript在web页面中使用window.ohos对象访问数据库。window.ohos是鸿蒙系统提供的JavaScript接口,用于与本地系统功能交互。

// 打开数据库
window.ohos.database.openDatabase({
  name: 'myDatabase',
  version: '1.0',
  displayName: 'My Database',
  estimatedSize: 1024
}, function(db) {
  // 创建表
  db.transaction(function(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS myTable (id unique, name)');
  });

  // 插入数据
  db.transaction(function(tx) {
    tx.executeSql('INSERT INTO myTable (id, name) VALUES (?, ?)', [1, 'HarmonyOS']);
  });

  // 查询数据
  db.transaction(function(tx) {
    tx.executeSql('SELECT * FROM myTable', [], function(tx, results) {
      for (let i = 0; i < results.rows.length; i++) {
        console.log(results.rows.item(i).name);
      }
    });
  });
});
  1. 关闭数据库:在不需要时关闭数据库以释放资源。
window.ohos.database.closeDatabase('myDatabase');

通过以上步骤,可以在ArkWeb组件的web页面中访问和操作本地数据库。

在HarmonyOS鸿蒙Next中,通过ArkWeb组件设置databaseAccess权限后,可以在Web页面中使用SQLite数据库。首先,确保在config.json中声明databaseAccess权限。然后,在Web页面中使用window.sqlitePluginwindow.openDatabase API来访问数据库。例如:

var db = window.sqlitePlugin.openDatabase({name: 'my.db', location: 'default'});
db.transaction(function(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS test (id unique, value)');
});

确保Web页面与ArkWeb组件的交互符合安全规范,避免敏感数据泄露。

回到顶部