HBuilder开发的app,数据存储有以下几种方式:
和传统app一样,可以将数据存储到线上数据库,
HBuilder的app,可以通过mui封装的ajax方法操作数据库。
利用h5的新特性,localStorage,sessionStorage,
其中sessionStorage较弱,localStorage较强,
localstorage结合store.js可以存储json对象。
第二种方式虽然可取,但是感觉还是比较弱,
个人比较习惯数据库的方式,对于没有线上数据库的app来说,
html5的新特性,websql是比较好的一种方式,
就是存储在本地的数据库,是一种不错的方式。
websql和大部分sql相似,但是可以直接通过html5操作,
也就是说不需要安装数据库,只要是支持html5的浏览器都可以使用。
但是和成熟的dbms相比,websql还是比较弱的,最简单的一点来说,不支持id自增。
封装了websql创建数据库,更新和查询操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
qiao.h.db = function (name, size){ var db_name = name ? name : 'db_test' ; var db_size = size ? size : 2; return openDatabase(db_name, '1.0' , 'db_test' , db_size * 1024 * 1024); }; qiao.h.update = function (db, sql){ if (db &&sql) db.transaction( function (tx){tx.executeSql(sql);}); }; qiao.h.query = function (db, sql, func){ if (db && sql){ db.transaction( function (tx){ tx.executeSql(sql, [], function (tx, results) { func(results); }, null ); }); } }; |
由于id不能自增,所有每次插入的时候需要手动获取最大id并加1(此方法待优化,暂时如此):
1
2
3
4
5
6
|
qiao.h.query(db, 'select max(id) mid from t_plan_day_todo' , function (res){ var id = (res.rows.item(0).mid) ? res.rows.item(0).mid : 0; qiao.h.update(db, 'insert into t_plan_day_todo (id, plan_title, plan_content) values (' + (id+1) + ', "' + title + '", "' + content + '")' ); $( '#todolist' ).prepend(genLi({id:id+1, 'plan_title' :title, 'plan_content' :content})).show(); });www.bcty365.com |