javascript 完全正确的数据库indexedDB
1 //indexedDB 2 var dbName = 'whx', version = '1', dbTableName = 'bbg', request, db, conCls, updateKey, fun = new Fun(); 3 function openDbs(){//请求数据库 4 fun.elem('codeId').innerHTML += '打开数据库<br />'; 5 6 request.onupgradeneeded = function(e){ 7 fun.elem('codeId').innerHTML += '新的版本号<br />'; 8 var t = e.target.result; 9 if(!t.objectStoreNames.contains(dbTableName)){ 10 var dbB = t.createObjectStore(dbTableName, { 11 keyPath : 'id', 12 autoIncrement : true 13 }); 14 dbB.createIndex('id','id',{unique : false}); 15 fun.elem('codeId').innerHTML += '创建新表<br />'; 16 } 17 } 18 19 request.onsuccess = function(e){ 20 fun.elem('codeId').innerHTML += '旧的版本号<br />'; 21 db = e.target.result;//数据库对象 22 fun.elem('codeId').innerHTML += '保存数据库对象<br />'; 23 } 24 25 request.onerror = function(){ 26 fun.elem('codeId').innerHTML += '打开数据库失败<br />'; 27 } 28 29 fun.display('consTxtId','none');//add content in table 30 fun.value('sltId','','set');//add content in table 31 fun.display('dbConId','block');//db btn 32 } 33 34 function close(){//关闭 35 db.close(); 36 fun.elem('codeId').innerHTML += '关闭数据库<br />'; 37 db.onclose = function(){//没用... 38 alert('close read'); 39 } 40 } 41 42 function deleteDb(){//删除 43 indexedDB.deleteDatabase(dbName); 44 fun.elem('codeId').innerHTML += '删除数据库<br />'; 45 } 46 47 function showTb(){//查看表内容 48 var setTable = db.transaction(dbTableName,'readwrite');//设置表权限 49 fun.elem('codeId').innerHTML += '设置表权限<br />'; 50 51 var getTable = setTable.objectStore(dbTableName);//获取表对象 52 fun.elem('codeId').innerHTML += '获取表对象<br />'; 53 54 var cursor = getTable.openCursor();//创建游标 55 fun.elem('codeId').innerHTML += '创建游标<br />'; 56 57 fun.elem('codeId').innerHTML += '获取表信息<br />'; 58 59 fun.value('sltId','','set'); 60 61 cursor.onsuccess = function(e){ 62 var cursorObj = e.target.result;//获取游标对象 63 console.log(cursorObj); 64 if(cursorObj != null){ 65 fun.elem('sltId').innerHTML += "id : " + cursorObj.value.id + ", content : " + cursorObj.value.content + " <span onclick='conUpdate("+cursorObj.key+")'>修改</span> || <span onclick='conDelete("+cursorObj.key+")'>删除</span><br /><br />"; 66 if(cursorObj.key == 2){ 67 //console.log(cursorObj.value); 68 } 69 cursorObj.continue();//游标移动下一个条 70 } 71 } 72 73 cursor.onerror = function(){ 74 fun.elem('codeId').innerHTML += '创建游标失败<br />'; 75 } 76 } 77 78 function addCon(con){//添加 79 var setTable = db.transaction(dbTableName,'readwrite');//设置表权限 80 fun.elem('codeId').innerHTML += '设置表权限<br />'; 81 82 var getTable = setTable.objectStore(dbTableName);//获取表对象 83 fun.elem('codeId').innerHTML += '获取表对象<br />'; 84 85 var conSet = getTable.add(con); 86 conSet.onsuccess = function(){ 87 showTb(); 88 fun.elem('codeId').innerHTML += '添加内容成功<br />'; 89 } 90 } 91 92 function updateCon(key,con){//修改 93 var setTable = db.transaction(dbTableName,'readwrite');//设置表权限 94 fun.elem('codeId').innerHTML += '设置表权限<br />'; 95 96 var getTable = setTable.objectStore(dbTableName);//获取表对象 97 fun.elem('codeId').innerHTML += '获取表对象<br />'; 98 99 var update = getTable.put({content : con.content, id : key}); 100 update.onsuccess = function(){ 101 showTb(); 102 fun.elem('codeId').innerHTML += "修改key:"+key+"内容成功<br />"; 103 } 104 } 105 106 function deleteCon(key){//删除 107 var setTable = db.transaction(dbTableName,'readwrite');//设置表权限 108 fun.elem('codeId').innerHTML += '设置表权限<br />'; 109 110 var getTable = setTable.objectStore(dbTableName);//获取表对象 111 fun.elem('codeId').innerHTML += '获取表对象<br />'; 112 113 var dlt = getTable.delete(key); 114 dlt.onsuccess = function(){ 115 showTb(); 116 fun.elem('codeId').innerHTML += "删除key:"+key+"内容成功<br />"; 117 } 118 } 119 120 121 //------------------------------------------------btn------------------------------------------- 122 fun.elem('openDbId').onclick = function(){//request indexedDb btn 123 if('indexedDB' in window){ 124 request = indexedDB.open(dbName,version); 125 openDbs(); 126 }else{ 127 alert('当前浏览器不支持indexedDB!'); 128 } 129 } 130 131 fun.elem('ddId').onclick = function(){//delete database btn 132 fun.value('codeId','','set'); 133 fun.display('dbConId','none'); 134 deleteDb(); 135 close(); 136 } 137 138 fun.elem('closeId').onclick = function(){//close database btn 139 fun.value('codeId','','set'); 140 fun.display('dbConId','none'); 141 close(); 142 } 143 144 fun.elem('tbId').onclick = function(){//tables btn 145 showTb(); 146 } 147 148 fun.elem('aitId').onclick = function(){//add content in table btn 149 if(fun.elem('consTxtId').style.display == 'block'){ 150 conCls = ''; 151 fun.display('consTxtId','none'); 152 fun.value('conMsgId','','set'); 153 }else{ 154 conCls = 'add'; 155 fun.value('conMsgId','添加 : ','set'); 156 fun.display('consTxtId','block'); 157 } 158 } 159 160 fun.elem('confirmAddId').onclick = function(){//confirm btn 161 if(fun.elem('conId').value == ''){ 162 alert('内容为空'); 163 }else{ 164 var con = {content : fun.elem('conId').value}; 165 if(conCls != undefined){ 166 if(conCls == "add"){ 167 addCon(con); 168 } 169 if(conCls == "update"){ 170 if(updateKey != undefined){ 171 updateCon(updateKey,con); 172 } 173 } 174 fun.display('consTxtId','none'); 175 fun.elem('conId').value = ''; 176 } 177 } 178 } 179 180 //content btn 181 function conUpdate(key){//修改 btn 182 conCls = 'update'; 183 updateKey = key; 184 fun.value('conMsgId','修改 : ','set'); 185 fun.display('consTxtId','block'); 186 } 187 function conDelete(key){//删除 btn 188 deleteCon(key); 189 } 190 </script>