1. /**
  2. * 打开数据库
  3. */
  4. export function openDB() {
  5.  
  6. return new Promise((resolve, reject) => {
  7. let indexedDB = window.indexedDB || window.webkitindexedDB;
  8. let request = indexedDB.open(conf.name);
  9.  
  10. request.onerror = function (e) {
  11. console.error(e.currentTarget.error.message);
  12. reject(false);
  13. };
  14. request.onsuccess = function (e) {
  15. window.INDEXEDDB_DB_RET = e.target.result;
  16. console.log('成功建立并打开数据库:' + conf.name + ' version' + conf.version);
  17. resolve(true);
  18. };
  19. request.onupgradeneeded = function (e) {
  20. let db = e.target.result;
  21. let transaction = e.target.transaction;
  22.  
  23. for (let key in conf.ojstore) {
  24. if (!db.objectStoreNames.contains(key)) {
  25. //没有该对象空间时创建该对象空间
  26. db.createObjectStore(key, conf.ojstore[key]);
  27. console.log('成功建立对象存储空间:' + key);
  28. }
  29. }
  30. }
  31. window.INDEXEDDB_DB = indexedDB;
  32. });
  33.  
  34. }
  35.  
  36. /**
  37. * 删除数据库
  38. */
  39. export function deleteDB(dbname) {
  40. let self = this;
  41. INDEXEDDB_DB.deleteDatabase(dbname);
  42. console.log(dbname + '数据库已删除')
  43. }
  44.  
  45. //关闭数据库
  46. export function closeDB() {
  47. INDEXEDDB_DB_RET.close();
  48. console.log('数据库已关闭')
  49. }
  50.  
  51. //添加数据,重复添加会报错
  52. export function addData(storename, data, callback) {
  53. let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
  54. for (let i = 0; i < data.length; i++) {
  55. let request = store.add(data[i]);
  56. request.onerror = function () {
  57. console.error('add添加数据库中已有该数据')
  58. };
  59. request.onsuccess = function () {
  60. console.log('add添加数据已存入数据库')
  61. callback();
  62. };
  63. }
  64. }
  65.  
  66. // 添加数据,重复添加会更新原有数据
  67. export function putData(storename, data) {
  68. console.log(data)
  69. let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
  70. for (let i = 0; i < data.length; i++) {
  71. let request = store.put(data[i]);
  72. request.onerror = function () {
  73. console.error('put添加数据库中已有该数据')
  74. };
  75. request.onsuccess = function () {
  76. console.log('put添加数据已存入数据库')
  77. };
  78. }
  79. }
  80.  
  81. //根据存储空间的键找到对应数据
  82. export function getDataByKey(storename, key, callback) {
  83. let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
  84. let request = store.get(key);
  85. request.onerror = function () {
  86. console.error('getDataByKey error');
  87. };
  88. request.onsuccess = function (e) {
  89. let result = e.target.result;
  90. console.log('查找数据成功')
  91. console.log(result);
  92. $(document).off('event_getDataByKey').on('event_getDataByKey', result);
  93. if (callback) {
  94. callback(result);
  95. }
  96. };
  97. }
  98.  
  99. // 获取全部数据 ,根据 storename
  100. export function getAllData(storename, callback) {
  101. let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
  102. let request = store.openCursor();
  103. let data = [];
  104. request.onerror = function () {
  105. console.error('getDataByKey error');
  106. };
  107. request.onsuccess = function (e) {
  108. let result = e.target.result;
  109. if (result && result !== null) {
  110. data.push(result.value);
  111. result.continue();
  112. } else {
  113. if (callback) {
  114. console.log('全部查找数据成功')
  115. callback(data);
  116. }
  117. }
  118. };
  119. }
  120.  
  121. //删除某一条记录
  122. export function deleteData(storename, key) {
  123. let store = store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
  124. store.delete(key)
  125. console.log('已删除存储空间' + storename + '中' + key + '记录');
  126. }
  127.  
  128. //删除存储空间全部记录
  129. export function clearData(storename) {
  130.  
  131. let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename);
  132. store.clear();
  133. console.log('已删除存储空间' + storename + '全部记录');
  134. }

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. Itunes共享机制实现

    http://www.raywenderlich.com/1948/itunes-tutorial-for-ios-how-to-integrate-itunes-file-sharing-with- ...

  2. 手把手教你写 Vue UI 组件库

    最近在研究 muse-ui 的实现,发现网上很少有关于 vue 插件具体实现的文章,官方的文档也只是一笔带过,对于新手来说并不算友好. 笔者结合官方文档,与自己的摸索总结,以最简单的 FlexBox  ...

  3. Easier Done Than Said?(应用到的知识)

    memset(b,0,sizeof(b)) 对于大块儿内存的分配,例如int arr[100];定义了数组arr,包含100个元素,如果你写成int arr[100]=0;想将数组全部内容初始化为0, ...

  4. 92.背包问题(lintcode)

    注意j-A[i-1]必须大于等于0,只大于0会报错 class Solution { public: /** * @param m: An integer m denotes the size of ...

  5. hrbust-1545-基础数据结构——顺序表(2)

    http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1545 基础数据结构——顺序表(2) ...

  6. SVN的使用二

    一,打开SCM 在xcode中,点击菜单: File -> Source Control –> Repositories 二,连接SVN服务器 1, 2,配置SVN服务器地址(http:/ ...

  7. touch-action css属性 滚动和缩放手势

    CSS 属性 touch-action 用于指定某个给定的区域是否允许用户操作,以及如何响应用户操作(比如浏览器自带的划动,缩放等) 默认情况下,平移(滚动) 和 缩放手势由浏览器专门处理.该属性用于 ...

  8. [LUOGU] P2330 [SCOI2005]繁忙的都市

    题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条 ...

  9. 【计算机网络】Session机制

    1. Http请求中Session机制 先简单说一下HTTP请求中的Session机制:Session数据保存在服务器端,SessionID保存在客户端的Cookies中(关闭浏览器时过期).当客户端 ...

  10. Django初学及mvt模型理解

    Django是python语言用来做web项目的一个模板,创建Django项目之后会自动生成models,views和templates文件夹,又叫mvt框架 文件结构如下: Models:其中mod ...