ionic2中实现 IndexedDB


import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';


@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  
  userInfo : string ;
  constructor(public navCtrl: NavController) {
  
  }


  /**
   * to create a IndexedDB
   * @param name : input DB name that you want create.
   * @param version:input DB version which you defined. 
   */
  createDB (name,version) {
    var request = window.indexedDB.open(name,version);
    request.onerror = function(event) {
     alert("open db function error!");
    } 
    request.onsuccess = function(event) {
     alert("create DB success");
    }
  }
  
  /**
   * delete IndexedDB you do not needed.
   * param name: input DB name that you want delete. 
   */
  deleteDB(name) {
    window.indexedDB.deleteDatabase(name);
    alert("delete DB success");
  }
  
  /**
   * create a objectStore with store name and version.
   * param storeName: input storeName you want to create.
   * param version: input DB version which you defined.
   */
  createObjectStore(dbName,storeName,version) {


    var request = window.indexedDB.open(dbName,version);
    request.onerror = function(event) {
      alert("open db function error!");
    } 
    request.onsuccess = function(event) {
      alert("open DB success");
    }
    request.onupgradeneeded = function(event) {
      var db = request.result;
      if(!db.objectStoreNames.contains(storeName)) {
        db.createObjectStore(storeName,{autoIncrement:true});//设置自增类型
       // db.createObjectStore(storeName,{keyPath:"id"});
        alert("create objectStore success");
      }
    } 
  }


  /**
   * drop a objectStore that you do not needed.
   * param storeName: input store name.
   * param version: input DB version which you defined.
   */
  dropObjectStore(dbName,storeName,version) {
    alert(storeName);
    var request = window.indexedDB.open(dbName,version);
    request.onerror = function(event) {
      alert("open db function error!");
    } 
    request.onsuccess = function(event) {
      alert("open DB success");
    }
    request.onupgradeneeded = function(event) {
      var db = request.result;
      if(db.objectStoreNames.contains(storeName)) {
        alert("drop ObjectStore success");
      }
    } 
  }


  /**
   * insert data when needed.
   * param dbName: input data base name.
   * param storeName: input store name.
   * param data: data insert to indexedDB.
   * param version: input data base version. 
   */
  insertData(dbName,storeName,data,version) {


    var openDBrequest = indexedDB.open(dbName,version);
    openDBrequest.onsuccess = function(event) {


      var db = openDBrequest.result;
      var transaction = db.transaction(storeName,'readwrite'); 
     
      var store = transaction.objectStore(storeName);
      var request = store.add({"id" : "1", "data" : data});
      alert(data);
      request.onerror = function(e) {
        alert("insert data failed");
      }
      request.onsuccess = function(e) {
        alert("insert data success");
      }
      transaction.oncomplete = function(event) { 
        
      }
    }
    openDBrequest.onerror = function(event) {
      alert("open error");
    }
  }
  
  /**
   * return the data you have store.
   * param dbName: input data base name.
   * param storeName: input store name.
   * param key: input the key previous defined.
   * param version : input data base version.
   */
   getDataByKey(dbName,storeName,key,version, func) {
    
    var openDBrequest = indexedDB.open(dbName,version);
    
    openDBrequest.onsuccess = function(event) {
      let db = openDBrequest.result;


      var transaction = db.transaction(storeName,'readwrite'); 
      
      var store = transaction.objectStore(storeName);
      var request = store.get(key);


      let result : string;
      request.onerror = function(e) {
        alert("get data failed");
      }
      request.onsuccess = function(e) {
        var teacher = request.result; 
        result = teacher.data;
        alert("get data success");
      }
      transaction.oncomplete = function(event) { 
        alert("get data complete");
        func(result);
      }
    }
    openDBrequest.onerror = function(event) {
      alert("open error");
    }
  }


  /**
   * update data with key and new value 
   * param dbName: input data base name.
   * param storeName: input store name.
   * param key : input the key.
   * param newValue : the data you want to replace the old data.
   * param version : input data base version.
   */
  updateDataByKey(dbName,storeName,key,newValue,version) {


    var openDBrequest = indexedDB.open(dbName,version);
    openDBrequest.onsuccess = function(event) {
      
      var db = openDBrequest.result;
      var transaction = db.transaction(storeName,'readwrite'); 
      var store = transaction.objectStore(storeName);


      var request = store.get(key);
      request.onerror = function(e) {
        alert("get data failed");
      }
      request.onsuccess = function(e) {
        var temp = request.result;
        temp.data = newValue;
        store.put(temp,key);


        alert("update data success");
      }
      transaction.oncomplete = function(event) { 
        
      }
    }
    openDBrequest.onerror = function(event) {
      alert("open error");
    }
  }
  
  /**
   * delete data with key.
   * param dbName: input data base name.
   * param storeName: input store name.
   * param key : input the key.
   * param version : input data base version.
   */
  deleteDataBykey(dbName,storeName,key,version) {


    var openDBrequest = indexedDB.open(dbName,version);
    openDBrequest.onsuccess = function(event) {
      
      var db = openDBrequest.result;
      var transaction = db.transaction(storeName,'readwrite'); 
      var store = transaction.objectStore(storeName);
      store.delete(key);
    }
    openDBrequest.onerror = function(event) {
      alert("open error");
    }
  }


  test(){
    //this.getDataByKey('test1','teachers',2,5);
    //this.dropObjectStore('test1','teachers',5);
    //this.deleteDB('test1');
    //this.createDB('test1',1);
    //this.createObjectStore('test1','teachers',3);
    //var data = this.userInfo;
    //this.insertData('test1','teachers',data,3);


    this.getDataByKey('test1','teachers',2,3, this.function1.bind(this));
  }
  
  /*get userInfo () {
    //var uinfo =  this.getDataByKey('test1','teachers',2,2);
    //alert(ui);      
  }*/


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值