js+html5操作sqlite資料庫的方法,html5sqlite

來源:互聯網
上載者:User

js+html5操作sqlite資料庫的方法,html5sqlite

本文執行個體講述了js+html5操作sqlite資料庫的方法。分享給大家供大家參考,具體如下:

//copyright by lanxyou lanxyou[at]gmail.comvar lanxDB=function(dbname){  var db=openDatabase(dbname,'1.0.0','',65536);  return{    //返回資料庫名    getDBName:function(){      return dbname;    },    //初始化資料庫,如果需要則建立表    init:function(tableName,colums){      this.switchTable(tableName);      colums.length>0?this.createTable(colums):'';      return this;    },    //建立表,colums:[name:欄位名,type:欄位類型]    createTable:function(colums){      var sql="CREATE TABLE IF NOT EXISTS " + this._table ;      var t;      if (colums instanceof Array && colums.length>0){        t=[];        for (var i in colums){          t.push(colums[i].name+' '+colums[i].type);        }        t=t.join(', ');      }else if(typeof colums=="object"){        t+=colums.name+' '+colums.type;      }      sql=sql+" ("+t+")";      var that=this;      db.transaction(function (t) {         t.executeSql(sql) ;   })    },    //切換表    switchTable:function(tableName){      this._table=tableName;      return this;    },    //插入資料並執行回呼函數,支援批量插入    //data為Array類型,每一組值均為Object類型,每一個Obejct的屬性應為表的欄位名,對應要儲存的值    insertData:function(data,callback){      var that=this;      var sql="INSERT INTO "+this._table;      if (data instanceof Array && data.length>0){        var cols=[],qs=[];        for (var i in data[0]){          cols.push(i);          qs.push('?');        }        sql+=" ("+cols.join(',')+") Values ("+qs.join(',')+")";      }else{        return false;      }      var p=[],        d=data,        pLenth=0,        r=[];      for (var i=0,dLength=d.length;i<dLength;i++){        var k=[];        for (var j in d[i]){          k.push(d[i][j]);        }        p.push(k);      }      var queue=function(b,result){        if (result){          r.push(result.insertId ||result.rowsAffected);        }        if (p.length>0){          db.transaction(function (t) {             t.executeSql(sql,p.shift(),queue,that.onfail);          })        }else{          if (callback){            callback.call(this,r);          }        }      }      queue();    },    _where:'',    //where語句,支援自寫和以對象屬性值對的形式    where:function(where){      if (typeof where==='object'){        var j=this.toArray(where);        this._where=j.join(' and ');      }else if (typeof where==='string'){        this._where=where;      }      return this;    },    //更新資料,data為屬性值對形式    updateData:function(data,callback){      var that=this;      var sql="Update "+this._table;      data=this.toArray(data).join(',');      sql+=" Set "+data+" where "+this._where;      this.doQuery(sql,callback);    },    //根據條件儲存資料,如果存在則更新,不存在則插入資料    saveData:function(data,callback){      var sql="Select * from "+this._table+" where "+this._where;      var that=this;      this.doQuery(sql,function(r){        if (r.length>0){          that.updateData(data,callback);        }else{          that.insertData([data],callback);        }      });    },    //擷取資料    getData:function(callback){      var that=this;      var sql="Select * from "+that._table;      that._where.length>0?sql+=" where "+that._where:"";      that.doQuery(sql,callback);    },    //查詢,內部方法    doQuery:function(sql,callback){      var that=this;      var a=[];      var bb=function(b,result){        if (result.rows.length){          for (var i=0;i<result.rows.length;i++){            a.push(result.rows.item(i));          }        }else{          a.push(result.rowsAffected);        }        if (callback){          callback.call(that,a);        }      }      db.transaction(function (t) {         t.executeSql(sql,[],bb,that.onfail) ;      })    },    //根據條件刪除資料    deleteData:function(callback){      var that=this;      var sql="delete from "+that._table;      that._where.length>0?sql+=" where "+that._where:'';      that.doQuery(sql,callback);    },    //刪除表    dropTable:function(){      var sql="DROP TABLE IF EXISTS "+this._table;      this.doQuery(sql);    },    _error:'',    onfail:function(t,e){      this._error=e.message;      console.log('----sqlite:'+e.message);    },    toArray:function(obj){      var t=[];      obj=obj || {};      if (obj){        for (var i in obj){          t.push(i+"='"+obj[i]+"'");        }      }      return t;    }  }}/*examples:var db=new lanxDB('testDB');db.init('channel_list',[{name:'id',type:'integer primary key autoincrement'},{name:'name',type:'text'},{name:'link',type:'text'},{name:'cover',type:'text'},{name:'updatetime',type:'integer'},{name:'orders',type:'integer'}]);db.init('feed_list',[{name:'parentid',type:'integer'},{name:'feed',type:'text'}]);db.switchTable('channel_list').insertData([{name:'aa',link:'ss',updatetime:new Date().getTime()},{name:'bb',link:'kk',updatetime:new Date().getTime()}]);db.where({name:'aa'}).getData(function(result){  console.log(result);//result為Array});db.where({name:'aa'}).deleteData(function(result){  console.log(result[0]);//刪除條數});db.where({name:'bb'}).saveData({link:'jj'},function(result){  console.log(result);//影響條數})})*/

希望本文所述對大家JavaScript程式設計有所協助。

您可能感興趣的文章:
  • javascript封裝的sqlite操作類執行個體
  • Javascript串連Access資料庫完整執行個體
  • JavaScript資料庫TaffyDB用法執行個體分析
  • JavaScript中串連操作Oracle資料庫執行個體
  • JavaScript中操作Mysql資料庫執行個體
  • JavaScript使用ActiveXObject訪問Access和SQL Server資料庫
  • JavaScript操作Oracle資料庫樣本
  • JavaScript實現的記憶體資料庫LokiJS介紹和入門執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.