zoukankan      html  css  js  c++  java
  • websql数据库javascript操作库websqlWrapper

    最近的HTML5项目中要用到客户端数据持久化,就尝试了一下HTML5客户端数据持久化方案。本来选用的是indexedDB来保存服务器数据至本地,但由于webkit升级后原本用IndexedDB写好的逻辑报错,加之操作IndexedDB比较奇葩,干脆又选用了web sql。 

    但是web sql 对于前端人员用习惯了javascript再来写sql语句操作数据库总感觉怪怪的。所以自己把sql语句封装成了一个js库,取名为websqlWrapper.

     websql浏览器支持情况,pc与移动端都比较良好

    介绍

    WebsqlWrapper是一个简化websql操作的javascript库,在BSD协议下开源发布。

    WebsqlWrapper名称的来历: websql 包装器。

    此库的所有操作都是异步的,虽然websql提供同步操作接口,但为了UI考虑,本库暂时只提供异步操作

    本库已传至github上。下载地址

    https://github.com/willian12345/websqlWrapper


    如何使用

    在html中引用websqlwrapprjs

    "websqlwrapper.js"

    1、建立数据库

    注意:建立数据库是同步操作

    var db = WebsqlWrapper({
              name: 'demoDB'
            , displayName:'demoDB1'
            , version:1
        });

    或,以传统方式new一个数据库出来

    var db = new WebsqlWrapper({
              name: 'demoDB'
            , displayName:'demoDB1'
            , version:1
        });

    2、建立一张数据表名为demo

    第一个参数是表名,第二个参数即字段对象,键/值形式,值代表字段对应的类型限制

    demoReady 为建立数据表成功后的回调

    db.define('demo', {id:'INTEGER UNIQUE', message:'TEXT NOT NULL', num: 'FLOAT'}, demoReady);

    3、操作数据表

    在demoReady回调中,就可进行对表进行操作了

    操作数据表,首先得获得一个数据表的实例

    var table = db.instance('demo');

    保存一条数据, save: 更新或插入

    注意:需要传第二个参数key

    table.save({id: 1, message: 'helloworld', num: 123456}, 'id');

    插入数据, insert: 更新或插入

    注意:由于我们设置了id字段为unique所以当程序执行第二遍时控制台会输出错误信息

    table.insert({id: 2, message: 'fuckworld', num: 123});
    table.insert({id: 3, message: 'hi', num: 123});

    更新数据, update

    注意:需要传第二个参数key

    table.update({id: 2, message: 'fuckworld-updated', num: 123}, 'id');

    获取数据, get

    table.get('num === 123', function(r){
                console.log('查询数据: ', r);
            });





    为了更加的开放 query这个API,也支持直接执行SQL语句

    db.query('SELECT * FROM demo', function(r){
                console.log('查询结果: ', r);
            });

    批处理操作, batch

    注意:在本库中,暂时所有的数据库API都只提供异步操作,所以在处理多条数据操作时此命令特别重要,等所有命令处理完后即可以回调中放心继续其它操作

    否则每一条SQL执行完你都得自己写一个回调,那会麻烦死

    batch即可等所有SQL执行完后再调用回调。

    可以先定义一个数组,数组项为需要操作的数据库命令,来批处理操作,列如:一次性插入,更新,删除,保存等操作

    // 定义一个命令数组
            var arr = [
                  {type: 'save', item: {id: 4, message: 'my name is lilei11', num: 207}, args: 'id'}
                , {type: 'save', item: {id: 5, message: 'my name is hameimei', num: 201}, args: 'id'}
                , {type: 'query', item: 'SELECT * FROM demo'}
                , {type: 'query', item: 'SELECT * FROM demo'}
                , {type: 'query', item: 'SELECT * FROM demo'}
            ];
            // 批处理
            table.batch(arr, function(r){
                console.log('批处理操作成功!');
            });

    更多的API,请施主还是看源码吧。很简单



    注:转载请注明出处:偷饭猫email: xiaodong1986@me.com

  • 相关阅读:
    Sqlserver 实际开发中表变量的用法
    Python Day 20 面向对象 (面向对象的组合用法,面向对象的三大特性
    Python Day 19 面向对象(初识面向对象)
    Python Day 18 常用模块(模块和包)
    Python Day 17 常用模块(常用模块一 时间模块,random模块,os模块,sys模块,序列化模块)
    Python Day 15 函数(递归函数、二分查找算法)
    Python Day 14 函数(内置函数,匿名函数(lambda表达式))
    Python Day 13 函数(迭代器,生成器,列表推导式,生成器表达式)
    Python Day 11 + Python Day 12 函数(函数名的应用,闭包,装饰器)
    Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)
  • 原文地址:https://www.cnblogs.com/willian/p/2939482.html
Copyright © 2011-2022 走看看