indexedDB.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. //index.db.js;
  2. /*********
  3. *说明:HTML本地数据库存储操作类
  4. *编写:张祥明
  5. *时间:2017-09-27
  6. *************/
  7. window.indexedDB = window.indexedDB || window.mozIndexedDB ||window.webkitIndexedDB ||window.msIndexedDB;
  8. window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;
  9. window.IDBKeyRange = window.IDBKeyRange ||window.webkitIDBKeyRange ||window.msIDBKeyRange;
  10. (function (window) {
  11. 'use strict';
  12. var db = {
  13. version: 1, // important: only use whole numbers!
  14. objectStoreName: 'ZLPMS',
  15. instance: {},
  16. upgrade: function (e) {
  17. var
  18. _db = e.target.result,
  19. names = _db.objectStoreNames,
  20. name = db.objectStoreName;
  21. if (!names.contains(name)) {
  22. _db.createObjectStore(
  23. name,
  24. {
  25. keyPath: 'id',
  26. autoIncrement: true
  27. });
  28. }
  29. },
  30. errorHandler: function (error) {
  31. window.alert('error: ' + error.target.code);
  32. },
  33. isIndexedDB: function () {
  34. var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
  35. if (indexedDB) {
  36. return true;
  37. }
  38. else {
  39. return false;
  40. }
  41. } ,
  42. open: function (callback) {
  43. var request = window.indexedDB.open(
  44. db.objectStoreName, db.version);
  45. request.onerror = db.errorHandler;
  46. request.onupgradeneeded = db.upgrade;
  47. request.onsuccess = function (e) {
  48. db.instance = request.result;
  49. db.instance.onerror =
  50. db.errorHandler;
  51. callback();
  52. };
  53. },
  54. getObjectStore: function (mode) {
  55. var txn, store;
  56. mode = mode || 'readonly';
  57. txn = db.instance.transaction(
  58. [db.objectStoreName], mode);
  59. store = txn.objectStore(
  60. db.objectStoreName);
  61. return store;
  62. },
  63. save: function (data, callback) {
  64. db.open(function () {
  65. var store, request,
  66. mode = 'readwrite';
  67. store = db.getObjectStore(mode),
  68. request = data.id ?
  69. store.put(data) :
  70. store.add(data);
  71. request.onsuccess = callback;
  72. });
  73. },
  74. getAll: function (callback) {
  75. db.open(function () {
  76. var
  77. store = db.getObjectStore(),
  78. cursor = store.openCursor(),
  79. data = [];
  80. cursor.onsuccess = function (e) {
  81. var result = e.target.result;
  82. if (result &&
  83. result !== null) {
  84. data.push(result.value);
  85. result.continue();
  86. } else {
  87. callback(data);
  88. }
  89. };
  90. });
  91. },
  92. get: function (id, callback) {
  93. // id = parseInt(id);
  94. db.open(function () {
  95. var store = db.getObjectStore();
  96. var request = store.get(id);
  97. request.onsuccess = function (e) {
  98. callback(e.target.result);
  99. };
  100. });
  101. },
  102. 'delete': function (id, callback) {
  103. // id = parseInt(id);
  104. db.open(function () {
  105. var
  106. mode = 'readwrite',
  107. store, request;
  108. store = db.getObjectStore(mode);
  109. request = store.delete(id);
  110. request.onsuccess = callback;
  111. });
  112. },
  113. deleteAll: function (callback) {
  114. db.open(function () {
  115. var mode, store, request;
  116. mode = 'readwrite';
  117. store = db.getObjectStore(mode);
  118. request = store.clear();
  119. request.onsuccess = callback;
  120. });
  121. }
  122. };
  123. window.zlsoft = window.zlsoft || {};
  124. window.zlsoft.db = db;
  125. }(window));