html5(八) IndexedDB
IndexedDB 是一个数据库系统,它在用户的计算机上存储索引信息。
IndexedDB与传统的数据库不同。在IndexedDB中,数据库中的信息以对象的形式存储在对象库表中。对象库没有特定的结构,只能够找到其中对象的索引和名称。这些对象也没有既定的结构,每个对象的结构可以各不相同。这有点类似NoSQL DB
window.indexedDB.open(数据库名, 版本号);
version属性——返回当前的版本值
setVersion()方法——给使用中的数据库分配一个新版本值。(可以是数字,也可以是字符)
createObjectStore(name,keyPath,autoIncrement)——这个方法用属性制定的名称和配置集合来创建一个对象库。
name必须的,keyPath属性用来生命每个对象的公共索引。autoIncrement属性是个bool值,用来指定对象库是否拥有一个键生成器。
objectStore(name)——要访问对象库中的对象,必须启动一个事务,并未这个事物打开对象库。
deleteObjectStore(name)——删除name属性名的对象库。
只有在创建数据库或者将数据库升级为新版本的时候,才能应用createObjectStore。deleteObjectStore 方法,以及负责数据库配置的其他方法。
索引
要在对象库中寻找对象,需要将这些对象的某些属性设置为索引。
一 可以在创建的时候设置索引 createObjectStore(name,keyPath,autoIncrement)
二 createIndex(name,properly,unique)——这个方法为指定对象创建索引。name:对象名。property:属性名 unique:是个布尔值,代表是否存在两个或多个对象共享同一索引值的可能。
index(name)——要使用的索引,必须县创建索引的引用,然后再将这个引用分配给事物。
deleteIndex(name)——删除索引
事务
操作必须通过事务来实现:生成事务方法——transaction()
事务属性:READ_ONLY:只读 READ_WRITE:读写 VERSION_CHANGE:修改版本
对象库的方法
add(object)——添加对象。如果对象中已经存在与索引相同的对象,则返回错误。
put(object)——修改对象。在对象库中已经存在与索引相同的对时,会覆盖与索引相同的对象。
get(key)——获取指定对象。key索引。
delete(key)——删除对象。
打开数据库
indexedDB属性和open()方法讲打开指定名称的数据库,如果数据库不存在,则用指定名称创建一个数据库。
window.indexedDB=window.webkitIndexedDB || window.mozIndexedDB;
var request = indexedDB.open('mydatabase');
request.addEventListener('error',showerror,false);
request.addEventListener('success',start,false);
function showerror(e){
alert(e.code+e.message);
}
function start(e)
{
db=e.result || e.target.result;
if(db.version==''){
var request = db.setVersion('1.0');
request.addEventListener('error',showerror,false);
request.addEventListener('success',createdb,false);
}
}
function createdb(){
var objectstore=db.createObjectStore('movies',{keyPath:'id'});
objectstore.createIndex('SearchYear','date',{unique:false});
}
API处理完数据库请求之后,会触发error,success事件。
添加对象
function addobject(){
var keywork="";
var title="";
var year="";
var transaction=db.transaction(['movies'],IDBTransaction.READ_WRITE);
var objectstore=transaction.objectStore('movies');
var request=objectstore.add({id:kework,name:title,date:year});
request.addEventListener('success',function(){ show(keywork)},false);
}
获取对象
function show(keyword){
var transaction = db.transactioin(['movies']);
var objectstore=transaction.objectStore('movies');
var request = objectstore.get(keywork);
request.addEventListener('success',showlist,false);
}
function showlist(e){
var result = e.result || e.target.result;
alert(result.id + result.name + result.date);
}
转载于:https://www.cnblogs.com/lengp/p/4276864.html
html5(八) IndexedDB相关推荐
- html5 初试 indexedDB
indexedDB是存储大量结构化数据的API,demo中用到的是异步API,麻烦的就是所有对indexedDB的操作都会发生一个异步的'请求',只要熟悉了API操作起来也很简单. 大体流程是这样 1 ...
- html5 indexeddb 排序,html5 – 在IndexedDB中,有没有办法进行排序复合查询?
本回答中使用的术语"复合查询"是指在其WHERE子句中涉及多个条件的SQL SELECT语句.虽然indexedDB规范中没有提到这样的查询,但您可以通过创建一个包含一组属性名称的 ...
- html5indexeddb排序,html5的indexedDB数据库操作实例
效果: 代码: StringUtil.js //去除字符串中间空格 String.prototype.Trim = function() { return this.replace(/(^s*)|(s ...
- HTML5的IndexedDB数据库
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(1月16日-2月5日)
分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(1月16日-2月5日) 本周Silverlight学习资源更新 WIn2003部署Silverlight coo ...
- 前端一班:HTML5当天学习总结-摘抄张果博客园
一.初步了解HTML5,相关涉及技术以及行业前景 二.HTML5特性 HTML5 八个特性类别对应的8个Logo 语义化.离线&存储.设备访问.通信 多媒体.图形和特效.性能和集成.呈现(CS ...
- HTML5(九)——超强的 SVG 动画
SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些? 一.SVG 的 animation SVG animation 有五大元素,他们控制着各种不同类型的 ...
- 什么是React为什么使用React什么时候使用React
什么是React? (What is React?) React.js often referred to as React or ReactJS is a JavaScript library re ...
- tp5 自动加上html,【TP5.1】HTML标签自动转义,导致CKEditor保存内容无法正常显示!...
问题:使用Thinkphp5.1 开发的时候显示CKEditor保存的内容不符合预期. 希望的样子,肯定是不显示 等标签,而是下面的样子. 因为刚开始使用TP5.1和CKEditor,所以遇到问题有点 ...
- 【电脑运用及修理】Mozilla Firefox 浏览器
Firefox 浏览器 Firefox 浏览器,中文名"火狐浏览器",是来自 Mozilla 的一款免费的开源 web 浏览器. Firefox 发布于 2004 年,也是当今最流 ...
最新文章
- c语言逻辑运算类指令,组成原理第二章——计算机指令
- E-mail Composition and Decoding
- [Xcode 实际操作]四、常用控件-(15)MKMapView加载简单视图
- 用AJAX实现无刷新的分页
- 关于li标签之间的间隔如何消除!
- 定义物料管理的容差范围
- Linux MySQL5.5的安装
- 四川一级计算机课程编码,四川省计算机一级考试真题
- Linux 下安装python软件包(pip、nose、virtualenv、distribute )
- 运维祈求不宕机_[国庆特辑] 程序员应该求谁保佑才能保证不宕机?
- 一个 react+redux 工程实例
- 【Python数据挖掘】回归模型与应用
- Scrapy爬虫代理IP的使用
- 作为一名Java开发工程师需要掌握哪些专业技能
- 企业微信如何建立部门?企业成员怎么加入部门?
- 中国五矿集团有限公司采购电子商务平台
- 2022-2028全球与中国多功能烤箱市场现状及未来发展趋势
- 通过npm运行管理端界面并解决npm install安装报错
- GAE 博客——B3log Solo 0.2.1 发布了!
- 位与:一个数1的结果
热门文章
- 怎样理解“道不同,不相为谋”这句话呢。。。
- ROS学习笔记10(创建一个ROS消息和服务)
- java selenium_关于selenium的介绍
- Varnish——CDN加速实现(单个后端服务器、缓存命中率情况)
- oracle delphi唱盘,经典再升级 Oracle Delphi MK VI Gen 2
- 萌新的Python练习实例100例(三)一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数
- Java阶段2-02JS:07JS中的事件
- java系列2:方法的重载
- 斯诺登NFT作品拍得者PleasrDAO将继续收藏NFT艺术品
- 今日恐慌与贪婪指数为72 贪婪程度与昨日持平