1. <script type="text/javascript">
  2. //打开数据库
  3. function openDB(name,version){
  4. var version = version || 1;
  5. var request = window.indexedDB.open(name,version);
  6. request.onerror = function(e){
  7. console.log(e.currentTarget.error.message);
  8. };
  9. request.onsuccess = function(e){
  10. myDB.db = e.target.result;
  11. };
  12. request.onupgradeneeded = function(e){
  13. var db=e.target.result;
  14. if(!db.objectStoreNames.contains('students')){
  15. //db.createObjectStore('students',{keyPath:"id"});//以id为键存储数据 类似关联数组
  16. //db.createObjectStore('students',{autoIncrement: true});//以自增数值为键 类似索引数组
  17.  
  18. //创建索引
  19. var store=db.createObjectStore('students',{keyPath: 'id'});
  20. store.createIndex('nameIndex','name',{unique:true});
  21. store.createIndex('ageIndex','age',{unique:false});
  22. }
  23. console.log('DB version changed to ' + version);
  24. };
  25. }
  26. //插入数据
  27. function addData(db,storeName){
  28. var transaction=db.transaction(storeName,'readwrite');
  29. var store=transaction.objectStore(storeName);
  30.  
  31. for(var i=0;i<students.length;i++){
  32. store.add(students[i]);
  33. }
  34. }
  35. //查找数据
  36. function getDataByKey(db,storeName,value){
  37. var transaction=db.transaction(storeName,'readwrite');
  38. var store=transaction.objectStore(storeName);
  39. var request=store.get(value);
  40. request.onsuccess=function(e){
  41. var student=e.target.result;
  42. console.log(student.name);
  43. };
  44. }
  45. //利用索引查找数据
  46. function getDataByIndex(db,storeName){
  47. var transaction=db.transaction(storeName);
  48. var store=transaction.objectStore(storeName);
  49. var index = store.index("nameIndex");
  50. index.get('Byron').onsuccess=function(e){
  51. var student=e.target.result;
  52. console.log(student.id);
  53. }
  54. }
  55. //更新数据
  56. function updateDataByKey(db,storeName,value){
  57. var transaction=db.transaction(storeName,'readwrite');
  58. var store=transaction.objectStore(storeName);
  59. var request=store.get(value);
  60. request.onsuccess=function(e){
  61. var student=e.target.result;
  62. student.age=35;
  63. store.put(student);
  64. };
  65. }
  66. //删除数据
  67. function deleteDataByKey(db,storeName,value){
  68. var transaction=db.transaction(storeName,'readwrite');
  69. var store=transaction.objectStore(storeName);
  70. store.delete(value);
  71. }
  72. //清空object store数据(student)
  73. function clearObjectStore(db,storeName){
  74. var transaction=db.transaction(storeName,'readwrite');
  75. var store=transaction.objectStore(storeName);
  76. store.clear();
  77. }
  78. //关闭数据库
  79. function closeDB(db){
  80. db.close();
  81. }
  82. //删除数据库
  83. function deleteDB(name){
  84. indexedDB.deleteDatabase(name);
  85. }
  86. //配置数据库
  87. var myDB={
  88. name:'test2',
  89. version:3,
  90. db:null
  91. };
  92.  
  93. var students=[
  94. {
  95. id:1001,
  96. name:"Byron",
  97. age:24
  98. },
  99. {
  100. id:1002,
  101. name:"Frank",
  102. age:30
  103. },
  104. {
  105. id:1003,
  106. name:"Aaron",
  107. age:26
  108. }
  109. ];
  110. openDB(myDB.name,myDB.version);//打开数据库
  111. setTimeout(function(){
  112. addData(myDB.db,'students');
  113. },1000);
  114. //closeDB(myDB.db);//关闭数据库 打开和关闭数据库不能同时存在???
  115. //deleteDB(myDB.name);//删除数据库
  116.  
  117. </script>

indexDB操作(部分方法不太会使用)的更多相关文章

  1. C++ builder 操作Excel方法(据网上资料整理)

    c++ builder 操作Excel方法,下面是从网上找到的一些不错的方法,学习一下: 用OLE操作Excel(目前最全的资料)(04.2.19更新) 本文档部分资料来自互联网,大部分是ccrun( ...

  2. Windows的拖放操作使用方法

    Windows的拖放操作使用方法

  3. js操作textarea方法集合

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  4. 浅谈配置chrome浏览器允许跨域操作的方法

    浅谈配置chrome浏览器允许跨域操作的方法 一:(Lying人生感悟.可忽略) 最近有一天,对着镜子,发现满脸疲惫.脸色蜡黄.头发蓬松.眼神空洞,于是痛诉着说生活的不如意,工作没激情,工资不高,一个 ...

  5. poi-3.11-beta2-20140822.jar操作excel方法

    poi-3.11-beta2-20140822.jar操作excel方法 根据不同类型读取值的方法: // 获取单元格内不同类型的值 public String getValueByType(HSSF ...

  6. SQL 2005 中查询或执行另外的数据库操作的方法

    原文:SQL 2005 中查询或执行另外的数据库操作的方法 摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据, ...

  7. php中cookie实现二级域名可访问操作的方法

    本文实例讲述了php中cookie实现二级域名可访问操作的方法.分享给大家供大家参考.具体方法如下: cookie在一些应用中很常用,假设我有一个多级域名要求可以同时访问主域名绑定的cookie,下面 ...

  8. python字符串操作实方法大合集

    python字符串操作实方法大合集,包括了几乎所有常用的python字符串操作,如字符串的替换.删除.截取.复制.连接.比较.查找.分割等,需要的朋友可以参考下:   #1.去空格及特殊符号 s.st ...

  9. java字符流操作flush()方法及其注意事项

    java字符流操作flush()方法及其注意事项   flush()方法介绍 查阅文档可以发现,IO流中每一个类都实现了Closeable接口,它们进行资源操作之后都需要执行close()方法将流关闭 ...

随机推荐

  1. js-html音乐播放

    <img src="images/music.png" id="music" class="rotate"> <audio ...

  2. 洛谷—— P1134 阶乘问题

    https://www.luogu.org/problemnew/show/P1134 题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x ...

  3. ubuntu和raspberry下调试python_spi备忘

    Ubuntu12.04 自安装python3.3中头文件Python.h路径:usr/local/python3.3/include/python3.3m Ubuntu12.04 自带的Python2 ...

  4. Maven添加坐标(依赖)及在Eclipse中的操作

    例如:添加一个spring-test.jar的依赖过程,普遍的做法就是直接操作pom.xml文件. 1.打开maven的中央仓库:http://search.maven.org/ 2.搜索仓库: 进入 ...

  5. 高性能内存池NedAlloc

    http://www.nedprod.com/programs/portable/nedmalloc/ http://blog.sina.com.cn/s/blog_6f5b220601012x4t. ...

  6. js中call、apply、bind那些事2

    前言 回想起之前的一些面试,几乎每次都会问到一个js中关于call.apply.bind的问题,比如… 怎么利用call.apply来求一个数组中最大或者最小值 如何利用call.apply来做继承 ...

  7. TIdHTTPServer制作REST中间件

    TIdHTTPServer制作REST中间件 使用DELPHI7+INDY9开发 // 陈新光 2017-2-21// LIS数据同步服务器// 浏览器输入:http://127.0.0.1:8000 ...

  8. 在Android Studio下使用Hierarchy Viewer

    前言 最近看到这篇文章<Android UI性能优化详解>,里面使用了Hierarchy Viewer来对布局进行优化.开发android这么久了,一直都有听过这个工具,但是重来都没真正去 ...

  9. 百科知识 DCR文件如何打开

    使用IE可以打开,但是需要先安装Adobe Shockwave Player 天空软件下载地址:http://fpdownload.macromedia.com/get/shockwave/defau ...

  10. jquery 的父子节点

    1.一级父节点 parent() n级父节点 parents(???). 2.一级子节点 children() n级子节点  用find(???)