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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM