indexDB操作(部分方法不太会使用)

<script type="text/javascript">
    //打开数据库
    function openDB(name,version){
        var version = version || 1;
        var request = window.indexedDB.open(name,version);
        request.onerror = function(e){
            console.log(e.currentTarget.error.message);
        };
        request.onsuccess = function(e){
            myDB.db = e.target.result;
        };
        request.onupgradeneeded = function(e){
            var db=e.target.result;
            if(!db.objectStoreNames.contains(‘students‘)){
                //db.createObjectStore(‘students‘,{keyPath:"id"});//以id为键存储数据 类似关联数组
                //db.createObjectStore(‘students‘,{autoIncrement: true});//以自增数值为键 类似索引数组

                //创建索引
                var store=db.createObjectStore(‘students‘,{keyPath: ‘id‘});
                store.createIndex(‘nameIndex‘,‘name‘,{unique:true});
                store.createIndex(‘ageIndex‘,‘age‘,{unique:false});
            }
            console.log(‘DB version changed to ‘ + version);
        };
    }
    //插入数据
    function addData(db,storeName){
        var transaction=db.transaction(storeName,‘readwrite‘);
        var store=transaction.objectStore(storeName); 

        for(var i=0;i<students.length;i++){
            store.add(students[i]);
        }
    }
    //查找数据
    function getDataByKey(db,storeName,value){
        var transaction=db.transaction(storeName,‘readwrite‘);
        var store=transaction.objectStore(storeName);
        var request=store.get(value);
        request.onsuccess=function(e){
            var student=e.target.result;
            console.log(student.name);
        };
    }
    //利用索引查找数据
    function getDataByIndex(db,storeName){
        var transaction=db.transaction(storeName);
        var store=transaction.objectStore(storeName);
        var index = store.index("nameIndex");
        index.get(‘Byron‘).onsuccess=function(e){
            var student=e.target.result;
            console.log(student.id);
        }
    }
    //更新数据
    function updateDataByKey(db,storeName,value){
        var transaction=db.transaction(storeName,‘readwrite‘);
        var store=transaction.objectStore(storeName);
        var request=store.get(value);
        request.onsuccess=function(e){
            var student=e.target.result;
            student.age=35;
            store.put(student);
        };
    }
    //删除数据
    function deleteDataByKey(db,storeName,value){
        var transaction=db.transaction(storeName,‘readwrite‘);
        var store=transaction.objectStore(storeName);
        store.delete(value);
    }
    //清空object store数据(student)
    function clearObjectStore(db,storeName){
        var transaction=db.transaction(storeName,‘readwrite‘);
        var store=transaction.objectStore(storeName);
        store.clear();
    }
    //关闭数据库
    function closeDB(db){
        db.close();
    }
    //删除数据库
    function deleteDB(name){
        indexedDB.deleteDatabase(name);
    }
    //配置数据库
    var myDB={
        name:‘test2‘,
        version:3,
        db:null
    };

    var students=[
        {
            id:1001,
            name:"Byron",
            age:24
        },
        {
            id:1002,
            name:"Frank",
            age:30
        },
        {
            id:1003,
            name:"Aaron",
            age:26
        }
    ];
    openDB(myDB.name,myDB.version);//打开数据库
    setTimeout(function(){
        addData(myDB.db,‘students‘);
    },1000);
    //closeDB(myDB.db);//关闭数据库 打开和关闭数据库不能同时存在???
    //deleteDB(myDB.name);//删除数据库

</script>
时间: 2024-10-24 03:19:45

indexDB操作(部分方法不太会使用)的相关文章

BeginInvoke和EndInvoke操作和方法

开发语言:C#3.0 IDE:Visual Studio 2008 一.C#线程概述 在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行.这就需要在同一个进程中开启多个线程.我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows任务管理器,这时我们就会看到这个应用程序中所含有的线程数,如下图所示. 如果任务管理器没有“线程数”列,可以[查看]>[选择列]来显

SQL 2005 中查询或执行另外的数据库操作的方法

原文:SQL 2005 中查询或执行另外的数据库操作的方法 摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据,又该怎么办呢? 1.Synonym 2.openquery 3.Linked Servers Server Object-->Linked Servers--> serverType 选择 SQL Server, 在 Security 中 选择"Be made using this se

jquery源码解析:jQuery队列操作queue方法实现的原理

我们先来看一下jQuery中有关队列操作的方法集: 从上图可以看出,既有静态方法,又有实例方法.queue方法,相当于数组中的push操作.dequeue相当于数组的shift操作.举个例子: function aaa(){ alert(1); } function bbb(){ alert(2); } $.queue(document,"q1",aaa);   //在document下创建一个队列q1,并往q1队列中添加aaa函数. $.queue(document,"q1

Jquery CSS 操作 - height() 方法

一.height() 方法 height() 方法返回或设置匹配元素的高度 $(".btn1").click(function(){ $("p").height(50); }); height方法事例 Jquery CSS 操作 - height() 方法,码迷,mamicode.com

java file文件类操作使用方法大全

1.构造函数 [java] view plaincopy public class FileDemo { public static void main(String[] args){ //构造函数File(String pathname) File f1 =new File("c:\\zuidaima\\1.txt"); //File(String parent,String child) File f2 =new File("c:\\zuidaima",&quo

C++操作mysql方法总结(2)

C++通过ODBC和通过MFC ODBC操作mysql的两种方式 使用vs2013和64位的msql 5.6.16进行操作 项目中使用的数据库名和表数据请参考C++操作mysql方法总结(1)中的介绍 既然使用到了ODBC那么就要需要添加数据源了 控制面板->管理工具->数据源->用户DSN->添加 填写相关的数据库连接配置和使用的数据库,可点击Test进行测试,查看是否成功连接,设置完成后点击OK 其中Data Source Name即MySqlODBC我们会在连接数据库时用到

python字符串操作实方法大合集

python字符串操作实方法大合集,包括了几乎所有常用的python字符串操作,如字符串的替换.删除.截取.复制.连接.比较.查找.分割等,需要的朋友可以参考下: #1.去空格及特殊符号 s.strip().lstrip().rstrip(',') #2.复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sStr1 = 'strcpy2' print sStr2 #3.连接字符串 #strcat(sStr1,sStr2) sStr

转:C++操作mysql方法总结(1)

原文:http://www.cnblogs.com/joeblackzqq/p/4332945.html C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作mysql的两种方式 ? ? 使用vs2013和64位的msql 5.6.16进行操作 ? ? ? ? 项目中使用的数据库名为booktik 表为book ---. (共有30条记录,只列出了部分记录,14-30未列出) 一.通过mysql的C api进行操作 ? ? 1.新建一个空项目 ? ? 2.

Objective-C 时间操作实用方法总结

Objective-C 时间操作实用方法总结 根据月头获取月尾日期 /** * GetMonthEndDate * 根据月头获取月尾日期 * * @param monthBegin 月头(yyyy-MM-dd HH:mm:ss) * * @return NSDate / nil */ +(NSDate *) GetMonthEndDate:(NSString *)monthBegin{ if (![monthBegin isEqualToString:@""]){ NSDateForm