帖子
帖子
用户
博客
课程
显示全部楼层

YonBuilder 移动开发平台之数据存储

[复制链接]
发表于 2023-6-2 15:38:49
YonBuilder 移动开发平台开发者提供了多种本地数据存储方案,包括 Local Storage、偏好数据、文件和数据库等,以满足不同规模数据存储需求。其中 Local Storage 和偏好数据一般用于存储比较简单、规模较小的数据,而文件和数据库多用于存储大量数据,并且利于管理。

1. Local Storage
YonBuilder 移动开发平台对 html5 的 Local Storage 进行了封装,在存储时更加方便。通过 $api 对象的 setStorage 方法不仅可以存储字符串,还可以直接存储 JSON 对象,而 getStorage 获取时也可以直接得到 JSON 对象。用法如下:
  • var key = 'user';
  • var user = {};
  • user.name = 'kenny';
  • user.email = 'kenny**.**';
  • $api.setStorage(key, user);
  • user = $api.getStorage(key);

2. 偏好数据
适用于少量的偏好设置数据的存储,一般用于保存一些状态值等,不推荐大量的数据通过此方式存储。 api 对象提供了 setPrefs、getPrefs、removePrefs 方法,以键值对的方式传入参数,进行设置、获取和移除等,例如记录应用是否是第一次启动:
  • api.setPrefs({
  •     firstLaunch:false
  • });
其它方法请参考 api 对象文档。

3. 文件
(1)api 对象方法
YonBuilder 移动开发平台开发者提供了文件和文件夹相关操作 API,包括创建、移动、删除文件和文件夹等,以及文本内容的读写操作。 其中 api 对象提供了基本的 readFile、writeFile 方法,支持整个文件内容的读写操作,其读写文件示例代码如下:
  • api.readFile({
  •     path: 'fs://a.txt'
  • }, function(ret, err){
  •     if(ret.status){
  •         var data = ret.data;
  •     }
  • });
  • api.writeFile({
  •     path: 'fs://a.txt',
  •     data:'writeFile测试内容'
  • }, function(ret, err){
  •     if(ret.status){
  •         api.alert({msg:'写入文件成功'});
  •     } else{
  •         api.alert({msg:err.msg});
  •     }
  • });

(2)fs 对象方法
若要使用更加丰富的文件操作 API,则需要引入 fs 原生插件,该原生插件详细定义了文件和文件夹的相关操作,并且支持文本内容的指定位置读写,其写文件示例代码如下:
  • var fs = api.require('fs');
  • fs.open({
  •     path:'fs://test.txt',
  •     flags:'read_write'
  • },function(ret, err) {
  •     if (ret.status) {
  •         var fd = ret.fd; //fd为文件句柄
  •         fs.write({
  •             fd:fd,
  •             data:'text',
  •             offset:0
  •         },function(ret,err){
  •             if (ret.status) {
  •                 api.alert({msg:'write操作成功'});
  •             } else{
  •                 api.alert({msg:err.msg});
  •             }
  •         });
  •     }
  • });
其它方法请参考 fs 原生插件文档。

4. 数据库
YonBuilder 移动开发平台开发者提供了操作本地数据库的接口,但需要开发者熟悉基本的 SQL 语句,如创建表、插入和更新数据、获取数据等操作。
db 原生插件提供了数据库相关操作 API,详见 db 原生插件文档。部分示例代码如下:
创建一张名为 Persons 的表:
  • var db = api.require('db');
  • var sql = 'CREATE TABLE Persons(Id_P int, LastName varchar(255), FirstName varchar(255),
  • Address varchar(255), City varchar(255))';
  • db.executeSql({
  •     name: 'databaseName',
  •     sql: sql
  • }, function(ret, err){
  •     if(ret.status){
  •         api.alert({msg:'创建表成功'});
  •     } else{
  •         api.alert({msg:err.msg});
  •     }
  • });

从 Persons 表里面查询数据:
  • var db = api.require('db');
  • var sql = 'SELECT * FROM Persons';
  • db.selectSql({
  •     name:'databaseName',
  •     sql: sql
  • }, function(ret, err){
  •     if(ret.status){
  •         var data = ret.data;   
  •     } else{
  •       
  •     };
  • });

5
帖子
0
勋章
41
Y币
api.readFile({
            path: 'widget://data.txt
        }, function(ret, err){
            if(ret.status){
                var data_array= ret.data;
            }
        });这里报错。

假如我的数据存储在本地项目中,我应该如何读取数据并存储在数组中呢?
您需要登录后才可以回帖 登录

本版积分规则