国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js+html5操作sqlite數據庫的方法

2019-11-20 10:37:51
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松滋市| 珠海市| 华池县| 天等县| 万安县| 呼和浩特市| 弥渡县| 滕州市| 云霄县| 溧水县| 博白县| 扎兰屯市| 龙井市| 韶山市| 城口县| 晋城| 柳河县| 寿光市| 姜堰市| 抚宁县| 囊谦县| 唐河县| 繁昌县| 木里| 五家渠市| 禹州市| 秀山| 道孚县| 同江市| 钟祥市| 易门县| 河北区| 祁阳县| 贵德县| 乌审旗| 沙雅县| 松阳县| 黄平县| 隆化县| 沅江市| 东丽区|