【急】HarmonyOS鸿蒙Next中hap怎么访问sqlite数据库?

【急】HarmonyOS鸿蒙Next中hap怎么访问sqlite数据库?

String dataPath = "/data/profileData"; // 库文件
StoreConfig config2 = StoreConfig.(dataPath);

DatabaseHelper helper = DatabaseHelper();
RdbStore store = helper.getRdbStore(config2, callback);

使用上述代码打开一个sqlite库文件报错,确认库文件存在且使用sqlite3命令检测有效,错误如下

W/System.err: java.lang.IllegalArgumentException: Incorrect database name.
    at ohos.data.rdb.impl.SqliteDatabaseUtils.getDatabasePath(SqliteDatabaseUtils.java:369)
    at ohos.data.rdb.impl.SqliteDatabaseConfig.create(SqliteDatabaseConfig.java:146)
    at ohos.data.rdb.impl.RdbStoreImpl.open(RdbStoreImpl.java:106)
    at ohos.data.DatabaseHelper.getRdbStore(DatabaseHelper.java:101)

请问这是什么情况?怎么解决?

更多关于【急】HarmonyOS鸿蒙Next中hap怎么访问sqlite数据库?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

参数直接写数据库名称,不加任何路径
StoreConfig config = StoreConfig.newDefaultConfig(“RdbStoreTest.db”);

更多关于【急】HarmonyOS鸿蒙Next中hap怎么访问sqlite数据库?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好,这一句提示java.lang.IllegalArgumentException: the context config cannot be null是怎么回事

开发者你好,在鸿蒙开发者文档里面有详细的关于HarmonyOS关系型数据库的介绍及使用,支持SQLite具有的所有数据库特性。

  1. 创建数据库。

  2. 配置数据库相关信息,包括数据库的名称、存储模式、是否为只读模式等。

  3. 初始化数据库表结构和相关数据。

  4. 创建数据库。

示例代码如下:

StoreConfig config = StoreConfig.newDefaultConfig("RdbStoreTest.db");
private static final RdbOpenCallback callback = new RdbOpenCallback() {
  
  @Override
  public void onCreate(RdbStore store) {
    
    store.executeSql("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, salary REAL, blobType BLOB)");
    
  }
  
  @Override
  public void onUpgrade(RdbStore store, int oldVersion, int newVersion) {
    
  }
};
DatabaseHelper helper = new DatabaseHelper(context);
RdbStore store = helper.getRdbStore(config, 1, callback, null);
``


2 插入数据。

1. 构造要插入的数据,以ValuesBucket形式存储。
   
2. 调用关系型数据库提供的插入接口。

示例代码如下:

```java
ValuesBucket values = new ValuesBucket();
values.putInteger("id", 1);
values.putString("name", "zhangsan");
values.putInteger("age", 18);
values.putDouble("salary", 100.5);

亲爱滴开发者 ,这个问题已经在处理中啦,稍后答复你哟 ,么么哒

在HarmonyOS鸿蒙Next中,hap应用可以通过DataAbilityDataAbilityHelper来访问SQLite数据库。首先,需要在config.json中配置DataAbility,并定义数据库的URI。然后,在DataAbility的实现类中,使用DatabaseHelper来创建和管理SQLite数据库。通过DataAbilityHelper,hap应用可以执行SQL查询、插入、更新和删除操作。具体步骤如下:

  1. config.json中配置DataAbility
{
  "module": {
    "abilities": [
      {
        "name": ".MyDataAbility",
        "type": "data",
        "uri": "dataability://com.example.myapp.MyDataAbility"
      }
    ]
  }
}
  1. 实现DataAbility类:
import featureAbility from '@ohos.ability.featureAbility';
import dataAbility from '@ohos.data.dataAbility';
import relationalStore from '@ohos.data.relationalStore';

export default class MyDataAbility extends dataAbility.DataAbility {
  private db: relationalStore.RdbStore;

  onInitialized(abilityInfo) {
    const config = {
      name: 'myDatabase.db',
      securityLevel: relationalStore.SecurityLevel.S1
    };
    relationalStore.getRdbStore(this.context, config, (err, store) => {
      if (err) {
        console.error('Failed to get RdbStore.');
        return;
      }
      this.db = store;
    });
  }

  query(uri, columns, predicates, callback) {
    this.db.query(predicates, columns, callback);
  }

  insert(uri, valueBucket, callback) {
    this.db.insert('myTable', valueBucket, callback);
  }

  update(uri, valueBucket, predicates, callback) {
    this.db.update('myTable', valueBucket, predicates, callback);
  }

  delete(uri, predicates, callback) {
    this.db.delete('myTable', predicates, callback);
  }
}
  1. 在hap应用中使用DataAbilityHelper访问数据库:
import featureAbility from '@ohos.ability.featureAbility';
import dataAbility from '@ohos.data.dataAbility';

const uri = 'dataability://com.example.myapp.MyDataAbility';
const helper = dataAbility.createDataAbilityHelper(this.context);

// 查询数据
helper.query(uri, ['column1', 'column2'], null, (err, resultSet) => {
  if (err) {
    console.error('Failed to query data.');
    return;
  }
  // 处理查询结果
});

// 插入数据
const valueBucket = {
  'column1': 'value1',
  'column2': 'value2'
};
helper.insert(uri, valueBucket, (err, result) => {
  if (err) {
    console.error('Failed to insert data.');
    return;
  }
  // 处理插入结果
});

// 更新数据
const predicates = new dataAbility.DataAbilityPredicates();
predicates.equalTo('column1', 'value1');
helper.update(uri, valueBucket, predicates, (err, result) => {
  if (err) {
    console.error('Failed to update data.');
    return;
  }
  // 处理更新结果
});

// 删除数据
helper.delete(uri, predicates, (err, result) => {
  if (err) {
    console.error('Failed to delete data.');
    return;
  }
  // 处理删除结果
});

通过以上步骤,hap应用可以在HarmonyOS鸿蒙Next中访问SQLite数据库。

在HarmonyOS鸿蒙Next中,访问SQLite数据库可以通过ohos.data.relationalStore模块实现。首先,使用RdbStore类创建或打开数据库,然后通过SQL语句执行增删改查操作。具体步骤包括:

  1. 配置数据库信息;
  2. 获取RdbStore实例;
  3. 执行SQL操作。

示例代码可参考官方文档或开发者指南。

回到顶部