HTML5+CSS3+JavaScript+jQuery程序设计基础教程(第2版)全套PPT课件.ppt
div元素info程序从db.objectStoreNames数组中获取对象存储空间信息,并将其显示在div元素info中。div元素info的定义代码如下:divid=info/div获取对象存储空间信息10.5.5创建索引可以通过调用ObjectStore对象.createIndex()方法在对象存储空间中创建索引,方法如下:var索引对象=ObjectStore对象.createIndex(索引名,创建索引的列(即keyPath),索引选项);例如ObjectStore指向对象存储空间employees,下面的语句可以在对象存储空间employees的列email上创建一个唯一索引email。objectStore.createIndex(email,email,{unique:true})【例10-17】scripttype=text/javascriptvarrequest;functioncreate(){request=indexedDB.open(MyTestDatabase);request.onerror=function(event){ alert(错误号:+event.target.errorCode); };request.onupgradeneeded=function(event){ vardb=request.result;if(!db.objectStoreNames.contains(employees)){varobjectStore=db.createObjectStore(employees,{keyPath:id});objectStore.createIndex(email,email,{unique:true});}};}/script提示因为数据库MyTestDatabase已经存在,为了触发onupgradeneeded事件,可以在open方法中使用数据库版本号参数。10.5.6事务事务是包含一组数据库操作的逻辑工作单元。在事务中包含的数据库操作是不可分割的整体,要么一起被执行,要么回滚到执行事务之前的状态。1.transaction()方法调用transaction()方法可以定义一个事务,方法如下:事务对象=数据库实例.transaction(事务操作的对象存储空间名,事务模式)事务模式包括如下3种情况:?IDBTransaction.READ_ONLY,默认值,只读模式,也可以使用readonly;?IDBTransaction.READ_WRITE,可读写模式,也可以使用readwrite;?IDBTransaction..VERSION_CHANGE,版本升级模式。事务对象支持下面3种事件?error,当事务中出现错误时触发,默认的处理方式为回滚事务;?abort,当事务被终止时触发;?complete,当事务中的所有操作请求都被处理完成时触发。下面的代码演示如何定义和使用事务vartransaction=db.transaction([employees],readwrite);//当所有的数据都被增加到数据库时执行一些操作transaction.oncomplete=function(event){alert(Alldone!)?}?transaction.onerror=function(event){//不要忘记进行错误处理!}?//定义事务的操作……}从事务中获得相关的对象存储空间对象var对象存储空间对象=transaction.objectStore(对象存储空间名)?2.插入数据通过对象存储空间对象.add()方法可以向对象存储空间中插入数据,方法如下:varrequest对象=对象存储空间对象.add({?键1:?值1,键2:值2,……键n:值n})【例10-18】定义一个“插入数据”按钮,代码如下:buttononclick=insert();插入数据/buttoninsert()方法scripttype=text/javascriptvarrequest;functioninsert(){ request=indexedDB.open(MyTestDatabase); request.onerror=function(event){ alert(错误号:+event.tar