/**
* 打开数据库
*/
export function openDB() { return new Promise((resolve, reject) => {
let indexedDB = window.indexedDB || window.webkitindexedDB;
let request = indexedDB.open(conf.name); request.onerror = function (e) {
console.error(e.currentTarget.error.message);
reject(false);
};
request.onsuccess = function (e) {
window.INDEXEDDB_DB_RET = e.target.result;
console.log('成功建立并打开数据库:' + conf.name + ' version' + conf.version);
resolve(true);
};
request.onupgradeneeded = function (e) {
let db = e.target.result;
let transaction = e.target.transaction; for (let key in conf.ojstore) {
if (!db.objectStoreNames.contains(key)) {
//没有该对象空间时创建该对象空间
db.createObjectStore(key, conf.ojstore[key]);
console.log('成功建立对象存储空间:' + key);
}
}
}
window.INDEXEDDB_DB = indexedDB;
}); } /**
* 删除数据库
*/
export function deleteDB(dbname) {
let self = this;
INDEXEDDB_DB.deleteDatabase(dbname);
console.log(dbname + '数据库已删除')
} //关闭数据库
export function closeDB() {
INDEXEDDB_DB_RET.close();
console.log('数据库已关闭')
} //添加数据,重复添加会报错
export function addData(storename, data, callback) {
let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
for (let i = 0; i < data.length; i++) {
let request = store.add(data[i]);
request.onerror = function () {
console.error('add添加数据库中已有该数据')
};
request.onsuccess = function () {
console.log('add添加数据已存入数据库')
callback();
};
}
} // 添加数据,重复添加会更新原有数据
export function putData(storename, data) {
console.log(data)
let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
for (let i = 0; i < data.length; i++) {
let request = store.put(data[i]);
request.onerror = function () {
console.error('put添加数据库中已有该数据')
};
request.onsuccess = function () {
console.log('put添加数据已存入数据库')
};
}
} //根据存储空间的键找到对应数据
export function getDataByKey(storename, key, callback) {
let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
let request = store.get(key);
request.onerror = function () {
console.error('getDataByKey error');
};
request.onsuccess = function (e) {
let result = e.target.result;
console.log('查找数据成功')
console.log(result);
$(document).off('event_getDataByKey').on('event_getDataByKey', result);
if (callback) {
callback(result);
}
};
} // 获取全部数据 ,根据 storename
export function getAllData(storename, callback) {
let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
let request = store.openCursor();
let data = [];
request.onerror = function () {
console.error('getDataByKey error');
};
request.onsuccess = function (e) {
let result = e.target.result;
if (result && result !== null) {
data.push(result.value);
result.continue();
} else {
if (callback) {
console.log('全部查找数据成功')
callback(data);
}
}
};
} //删除某一条记录
export function deleteData(storename, key) {
let store = store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
store.delete(key)
console.log('已删除存储空间' + storename + '中' + key + '记录');
} //删除存储空间全部记录
export function clearData(storename) { let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
store.clear();
console.log('已删除存储空间' + storename + '全部记录');
}

indexedDB 增删改查的更多相关文章

  1. js操作indexedDB增删改查示例

    js操作indexedDB增删改查示例 if ('indexedDB' in window) { // 如果数据库不存在则创建,如果存在但是version更大,会自动升级不会复制原来的版本 var r ...

  2. IndexedDB 增删改查 简单的库

    <!DOCTYPE html> <html> <head> <title></title> <script src="Ind ...

  3. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  4. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(9)-MVC与EasyUI结合增删改查

    系列目录 文章于2016-12-17日重写 在第八讲中,我们已经做到了怎么样分页.这一讲主要讲增删改查.第六讲的代码已经给出,里面包含了增删改,大家可以下载下来看下. 这讲主要是,制作漂亮的工具栏,虽 ...

  6. 通过Java代码实现对数据库的数据进行操作:增删改查

    在写代码之前,依然是引用mysql数据库的jar包文件:右键项目-构建路径-设置构建路径-库-添加外部JAR 在数据库中我们已经建立好一个表xs :分别有xuehao  xingming    xue ...

  7. Hibernate全套增删改查+分页

    1.创建一个web工程 2.导入jar包 3.创建Student表 4.创建实体类 package com.entity; public class Student { private Integer ...

  8. 使用 Json.Net 对Json文本进行 增删改查

    JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...

  9. yii2 增删改查

    自己总结的yii2 advanced 版本的简单的增删改查,希望对大家有所帮助 1.gii生成的actionCreate()方法中 获取插入语句的id $id = $model->attribu ...

随机推荐

  1. javascript基本类型和引用类型,作用域和内存问题

    基本类型(null.undefined.boolean.number.string)和引用类型(Object 对象) 1  基本类型:只能不存一个值,一种类型:从一个变量向另一个变量复制基本类型的值, ...

  2. URL URI URN的区别

    下面这张图可以完美的解释他们三者之间的关系 URI包含URL和URN Uniform Resource Identifier :统一资源标志符,用于标识某一互联网资源 Uniform Resoutce ...

  3. 安装PIL报错解析

    开始安装PIL PIL只支持到python2.7,我安装的是python3.6版本,所以  不支持,报错 需要下载支持自己版本的包,下载地址https://www.lfd.uci.edu/~gohlk ...

  4. 在 webpack 中使用 ECharts

    http://echarts.baidu.com/tutorial.html#%E5%9C%A8%20webpack%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20ECharts W ...

  5. java script DOM BOM

    onclick        当用户点击某个对象时调用的事件句柄.ondblclick     当用户双击某个对象时调用的事件句柄. onfocus        元素获得焦点.            ...

  6. 组合的输出(DFS)

    题目描述: 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r<=n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数. 现要求你用递归的方法输出 ...

  7. tkinter学习-菜单与画布

    阅读目录 Menu 菜单控件 Menubutton 菜单按钮控件 OptionMenu 选项菜单 Canvas 画布控件 Menu: 说明:菜单控件,显示菜单栏,下拉菜单和弹出菜单 属性:创建一个顶级 ...

  8. centos 7 中文乱码的解决办法

    @@首先查看系统的操作版本,我的版本是centos 7.2 的. @@查看系统是否有安装中文语言包,一般我们在安装的时候系统都会默认的为我们安装上去的. locale -a | grep " ...

  9. Re:从零开始的Linux之路(杂谈)

    决定认真从零开始写一个Linux的学习过程,像我这么偷懒的人能写文字记录已经很不容易了,希望不要半途而废吧(拖走) 用多了Linux其实发现,要是哪天Linux和Windows能结合下就好了,简单粗暴 ...

  10. PHP方法之 substr

    简单描述: substr 主要用于字符串的截取,但是不适用于中文字符串,易出现乱码,中文字符串可使用mbstring. 方法申明: substr(string,start,length) string ...