indexdb使用demo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        function createDatabase(indexDbName) {
            //调用 open 方法并传递数据库名称。如果不存在具有指定名称的数据库,则会创建该数据库
            var openRequest = indexedDB.open(indexDbName);            
            var db;
            openRequest.onerror = function(e) {//当创建数据库失败时候的回调
                console.log("Database error: " + e.target.errorCode);
            };
            openRequest.onsuccess = function(event) {
                console.log("Database created");
                db = openRequest.result;//创建数据库成功时候,将结果给db,此时db就是当前数据库
                //alert("this is :"+db);
            };
            openRequest.onupgradeneeded = function (evt) {//更改数据库,或者存储对象时候在这里处理
 
            };
        }   
        
function deleteDatabase(indexDbName) {
    var deleteDbRequest = indexedDB.deleteDatabase(indexDbName);
    deleteDbRequest.onsuccess = function (event) {
        console.log("detete database success");
    };
    deleteDbRequest.onerror = function (e) {
        console.log("Database error: " + e.target.errorCode);
    };
}

//添加数据
function insertAnObj(indexDbName) {
    var userinfos=[{
                        id:1001,
                        name:"小李",
                        age:24
                    },{
                        id:1002,
                        name:"老王",
                        age:30
                    },{
                        id:1003,
                        name:"王麻子",
                        age:26
                    }];           
                    var openRequest = indexedDB.open(indexDbName,1);
    openRequest.onerror = function(e) {//当创建数据库失败时候的回调
        console.log("Database error: " + e.target.errorCode);
    };
    openRequest.onsuccess = function(event) {
        console.log("Database created");
        db = openRequest.result; //创建数据库成功时候,将结果给db,此时db就是当前数据库
        //alert("this is :"+db);
        //打开和userinfo相关的objectstore的事物
        var transaction = db.transaction("userinfo",'readwrite');
        var store=transaction.objectStore("userinfo");               
        for(var i=0;i<userinfos.length;i++){                   
        //alert("add"+userinfos[i]);
            store.add(userinfos[i]);//将对象添加至userinfo相关的objectstore中
        }
    };
    openRequest.onupgradeneeded = function(event) {
       var db = event.target.result;               
       //在第一次创建数据库的时候,就创建userinfo相关的objectstore,以供后面添加数据时候使用
        if(!db.objectStoreNames.contains('userinfo')){                   
        //keyPath:Javascript对象,对象必须有一属性作为键值
            db.createObjectStore('userinfo',{keyPath:"id"});
        }
    }
}

//指定主键自动增长
        function insertAutoInc(indexDbName) {
            var userinfos=[{
                                id:1001,
                                name:"小李",
                                age:24
                            },{
                                id:1002,
                                name:"老王",
                                age:30
                            },{
                                id:1003,
                                name:"王麻子",
                                age:26
                            }];           
                            var openRequest = indexedDB.open(indexDbName,2);
            openRequest.onerror = function(e) {//当创建数据库失败时候的回调
                console.log("Database error: " + e.target.errorCode);
            };
            openRequest.onsuccess = function(event) {
                console.log("Database created");
                db = openRequest.result; //创建数据库成功时候,将结果给db,此时db就是当前数据库
                //alert("this is :"+db);
                //打开和userinfo相关的objectstore的事物
                var transaction = db.transaction("userinfo",'readwrite');
                var store=transaction.objectStore("userinfo");               
                for(var i=0;i<userinfos.length;i++){                   
                //alert("add"+userinfos[i]);
                    store.add(userinfos[i]);//将对象添加至userinfo相关的objectstore中
                }
            };
            openRequest.onupgradeneeded = function(event) {
               var db = event.target.result;               
               //在第一次创建数据库的时候,就创建userinfo相关的objectstore,以供后面添加数据时候使用
                if(!db.objectStoreNames.contains('userinfo')){                   
                //keyPath:Javascript对象,对象必须有一属性作为键值
                    db.createObjectStore('userinfo',{autoIncrement: true});
                }
            }
}


function findDbdata(indexDbName,value) {
            var openRequest = indexedDB.open(indexDbName);           
            var db;
            openRequest.onerror = function(e) {//当创建数据库失败时候的回调
                console.log("Database error: " + e.target.errorCode);
            };
            openRequest.onsuccess = function(event) {
                console.log("Database created");
                db = openRequest.result; //创建数据库成功时候,将结果给db,此时db就是当前数据库
                var transaction = db.transaction("userinfo",'readwrite');               
                var objectStore = transaction.objectStore("userinfo");               
                //var cursor = objectStore.openCursor();
                var request = objectStore.get(Number(value));//查找i=1的对象,这里使用Number将1转换成数值类型
                request.onsuccess = function(e) {
                    var res = e.target.result; //查找成功时候返回的结果对象
                    console.dir(res);                   
                    if (res) {                       
                    for (var field in res) { //遍历每一个对象属性
                            console.log(field+":"+res[field]);                           
                            // alert(res[field]);
                        };
                    };
                }
            };
            openRequest.onupgradeneeded = function (event) {//更改数据库,或者存储对象时候在这里处理
 
            };
}

function findAllDbdata(indexDbName) {
            var openRequest = indexedDB.open(indexDbName);           
            var db;
            openRequest.onsuccess = function(event) {
                console.log("Database created");
                db = openRequest.result; //创建数据库成功时候,将结果给db,此时db就是当前数据库
                var transaction = db.transaction("userinfo",'readonly');               
                var objectStore = transaction.objectStore("userinfo");               
                var cursor = objectStore.openCursor();
                cursor.onsuccess = function(e) {
                    var res = e.target.result;
                    if(res) {
                        console.log("Key", res.key);
                        var request = objectStore.get(Number(res.key));//根据查找出来的id,再次逐个查找
                        request.onsuccess = function(e) {
                            var res = e.target.result; //查找成功时候返回的结果对象
                            //console.dir(res);
                            if (res) {                               
                            for (var field in res) { //遍历每一个对象属性
                                    console.log(field+":"+res[field]);                     
                                    // alert(res[field]);
                                };
                            };
                        }
                        res.continue();
                    }
                }  
            };
        }

function deleteDataById(indexDbName,value) {
            var openRequest = indexedDB.open(indexDbName);           
            var db;
            openRequest.onsuccess = function(event) {
                db = openRequest.result; //创建数据库成功时候,将结果给db,此时db就是当前数据库
                var transaction = db.transaction("userinfo",'readwrite');               
                var objectStore = transaction.objectStore("userinfo");               
                var request = objectStore.delete(Number(value));//根据查找出来的id,再次逐个查找
                request.onsuccess = function(e) {
                    console.log("delete success");
                }
            }
        }

function deleteAllData(indexDbName) {
            var openRequest = indexedDB.open(indexDbName);           
            var db;
            openRequest.onsuccess = function(event) {
                db = openRequest.result; //创建数据库成功时候,将结果给db,此时db就是当前数据库
                var transaction = db.transaction("userinfo",'readwrite');               
                var objectStore = transaction.objectStore("userinfo");
                objectStore.clear();
            }  
        }
    </script>
</head>
<body>
    <a href="javascript:createDatabase('firstdb')">createDatabase</a><br/>
    <a href="javascript:deleteDatabase('firstdb')">deleteDatabase</a></br/>
    <a href="javascript:insertAnObj('firstdb')">insertAnObj</a></br/>
    <a href="javascript:insertAutoInc('firstdb')">insertAutoInc</a></br/>
    <a href="javascript:findDbdata('firstdb','3')">findDbdata</a></br/>
    <a href="javascript:findAllDbdata('firstdb')">findAllDbdata</a></br/>
    <a href="javascript:deleteDataById('firstdb','6')">deleteDataById 6</a></br/>
    <a href="javascript:deleteAllData('firstdb')">deleteAllData</a></br/>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值