天天看點

幹貨:YonBuilder 移動開發平台資料存儲方案一覽

作者:用友YonBuilder

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 = '[email protected]';
 
$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{
 
       
 
    };
 
});