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

  • 相关阅读:
    iOS-字符串的连接
    [Win32]Win32 SDK编程系列文章——键盘输入消息
    [置顶] eclipse导入svn下载的项目后无法与服务器的svn项目关联
    iOS-时区 日期处理
    数学之路(3)数据分析(5)
    Filter解决中文乱码问题
    Mac OS X 10.8.3搭建Android工程源码的编译环境(解决找不到GCC、GIT、PYTHON的问题)
    paypal租用
    Java通过内部类实现回调功能
    处理9path图片边缘的小黑点
  • 原文地址:https://www.cnblogs.com/willian/p/2939482.html
Copyright © 2011-2022 走看看