在鸿蒙开发中,如何实现一个简单的应用内数据库操作功能?

阅读 644
avatarAI BotBETA
在鸿蒙开发中,实现一个简单的应用内数据库操作功能,你可以使用鸿蒙提供的分布式数据库服务(Distributed Database Service),该服务基于SQLite进行封装,提供了便捷的API来进行数据库操作。以下是一个基本的实现步骤:

1. **添加依赖**:
   确保你的项目已经配置好了必要的依赖,以便使用分布式数据库服务。在鸿蒙项目中,这通常意味着你需要在`config.json`文件中添加相应的模块依赖。

2. **创建数据库和表**:
   使用`createDatabase`方法创建数据库,然后使用SQL语句创建表。

// 创建数据库(如果数据库已存在,则不会重新创建)
DistributedDatabase database = DistributedDatabaseManager.createDatabase("myDatabase", DistributedDatabase.DATABASE_MODE_PRIVATE, null);

// 创建表(示例SQL语句)
String createTableSql = "CREATE TABLE IF NOT EXISTS myTable (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
database.executeSql(createTableSql, new DistributedDatabase.Callback() {

   @Override
   public void onExecuteSqlCompleted(String taskId, int errorCode, String errorMessage) {
       if (errorCode == DistributedDatabase.ERROR_CODE_SUCCESS) {
           // 表创建成功
       } else {
           // 处理错误
       }
   }

});


3. **插入数据**:
使用`insert`方法或执行INSERT SQL语句来插入数据。

String insertSql = "INSERT INTO myTable (name, age) VALUES ('Alice', 30)";
database.executeSql(insertSql, new DistributedDatabase.Callback() {

   @Override
   public void onExecuteSqlCompleted(String taskId, int errorCode, String errorMessage) {
       if (errorCode == DistributedDatabase.ERROR_CODE_SUCCESS) {
           // 数据插入成功
       } else {
           // 处理错误
       }
   }

});


4. **查询数据**:
使用`query`方法或执行SELECT SQL语句来查询数据。

String querySql = "SELECT * FROM myTable";
database.query(querySql, new DistributedDatabase.QueryCallback() {

   @Override
   public void onQueryCompleted(String taskId, int errorCode, String errorMessage, Cursor cursor) {
       if (errorCode == DistributedDatabase.ERROR_CODE_SUCCESS && cursor != null) {
           while (cursor.moveToNext()) {
               int id = cursor.getInt(cursor.getColumnIndex("id"));
               String name = cursor.getString(cursor.getColumnIndex("name"));
               int age = cursor.getInt(cursor.getColumnIndex("age"));
               // 处理查询结果
           }
           cursor.close();
       } else {
           // 处理错误
       }
   }

});


5. **更新和删除数据**:
类似地,你可以使用UPDATE和DELETE SQL语句来更新和删除数据。

String updateSql = "UPDATE myTable SET age = 31 WHERE name = 'Alice'";
String deleteSql = "DELETE FROM myTable WHERE name = 'Alice'";
database.executeSql(updateSql, / 回调处理 /);
database.executeSql(deleteSql, / 回调处理 /);


6. **关闭数据库**:
当不再需要数据库时,应关闭它以释放资源。

if (database != null && database.isOpen()) {

   database.close();

}


注意:以上代码是示例性质的,实际开发中可能需要根据具体需求进行调整,比如处理并发访问、异常处理等。此外,鸿蒙的分布式数据库服务还支持跨设备的数据同步,如果你需要这个功能,可以进一步探索相关API。
1 个回答

需要在应用中存储和查询数据。

使用数据库API来实现。

import database from '@ohos.database';

@Entry
@Component
struct DatabaseManager {
  saveData() {
    const db = database.openDatabase('myDatabase');
    db.transaction((trans) => {
      trans.executeSql('CREATE TABLE IF NOT EXISTS myTable (id unique, data)');
      trans.executeSql('INSERT INTO myTable (id, data) VALUES (?, ?)', [1, 'Hello World']);
    }, (err) => {
      if (!err) {
        console.log('数据保存成功');
      }
    });
  }

  build() {
    Column() {
      Button('保存数据到数据库').onClick(() => this.saveData());
    }
  }
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进