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);
}*/
}