indexedDB简单例子

复制代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>HTML5 - IndexedDB</title>
<script type="text/javascript">
var db;
var request;
var objectStore;
function _create(dbName){
    request=indexedDB.open(dbName,1);
    
    request.onerror = function () {
           alert("打开数据库失败:"+event.target.message);
    }
    request.onsuccess = function (event) {
        alert("打开数据库成功!");
           db=event.target.result;
           var transaction = db.transaction(["info"], "readwrite");
           objectStore = transaction.objectStore("info");
    } 
    request.onupgradeneeded = function(event) {
           alert("版本变化!");
           db = event.target.result;
           objectStore = db.createObjectStore("info", {keyPath: "userId",autoIncrement: true});
     }
}
   
function _delete(dbName){
    try{
           request=indexedDB.deleteDatabase(dbName);
           request.onerror = function () {
               alert("删除数据库失败:"+event.target.message);
        }
        request.onsuccess = function (event) {
            alert("删除数据库成功!");
        } 
    }catch(e){
       alert(e.getMessage);
    }
}
 
function _get (argument) {
    var p=document.getElementById("display");
    p.innerHTML="";//获取数据前先清理一下页面已显示的数据
    if(!db){
        alert("请打开数据先!");
        return false;
    }
    var store = db.transaction("info").objectStore("info");
    var keyRange = IDBKeyRange.lowerBound(0);//规定keyRange从0开始
    var cursorRequest = store.openCursor(keyRange);//按照keyRange的设置开启游标
 
    cursorRequest.onsuccess = function (e) {
 
        var result = e.target.result;
 
        if (!!result == false)
            return;
 
        _render(result.value);
        result.continue();//这边执行轮询读取
    };
 
    cursorRequest.onerror = function (e) {
        alert("数据检索失败!");
    };
 
}
 
function _render (e) {
    var p=document.getElementById("display");
    p.innerHTML+="姓名:"+e.name+" 年龄:"+e.age+" 性别:"+e.xb+"<br />";
}
 
function _add (argument) {
    var name=document.getElementById("name").value;
    var age=document.getElementById("age").value;
    var xb,flag=document.getElementById("nan").checked;
    if(flag)
        xb="";
    else
        xb="";
    var detail={
        name:name,
        age:age,
        xb:xb
    }
    if(!db){
        alert("请打开数据先!");
        return false;
    }
       var transaction = db.transaction(["info"], "readwrite");
    objectStore = transaction.objectStore("info");
    objectStore.add(detail);
    alert("添加成功!");
}
</script>
</head>
<body>
    <small>添加前请先打开数据库(如数据库不存在则执行创建过程)</small><br /><br />
    <button onClick="_create('user')">打开数据库</button>
       <button onClick="_delete('user')">删除数据库</button><br /><br />
    姓名:<input type="text" id="name"><br />
    年龄:<input type="number" id="age" min=1><br />
    性别:<br />
          男:<input type="radio" id="nan" name="xb" value="male" checked>
          女:<input type="radio" id="nv" name="xb" value="female"><br />
    
    <button onClick="_add()">添加数据</button>
    <button onClick="_get()">获取数据</button><br />
    <p id="display"></p>
    
</body>
</html>
复制代码
posted @   岁月淡忘了谁  阅读(219)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2017-04-22 js验证身份证格式
点击右上角即可分享
微信分享提示