webSQL

Posted 。。。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webSQL相关的知识,希望对你有一定的参考价值。

上一节讲述了localStorage,sessionStorage本地存储,但是如何实现本地数据库存储呢?

这一节将讲述本地存储方式websql存储。

websql存储方式一共有以下几个方法

openDatabase:这个方法使用现有的数据库或新建数据库来创建数据库对象。

transaction:这个方法允许我们执行事务处理;

executeSql:这个方法用于执行sql语句;

1 var db = openDatabase(name,version,displayName,estimateSize,creationCallback);

name:数据库的名字;

version:数据库的版本号;

displayName:数据库的描述;

estimateSize:数据库保存数据的大小;

createCallback:回调函数:

2 调用transaction来执行sql语句

transaction(function(tx){})

tx:回调函数所接收的参数,此参数为transaction对象的引用。

3 调用executeSql 方法来表示处理事务

transaction.executeSql(sql,[],dataHandler,errorHandler);

sql:要执行的sql语句;

[ ]:sql语句中的占位符“?”所对应的参数。

dataHandler:执行sql语句成功时调用的回调函数:

errorHandler:执行sql语句失败时调用的回调函数。

 

先贴代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webSQL</title>
    <script src="jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        //初始化数据库
        function initDatabase(){
            var db =getCurrentDB();
            if(!db){
                alert(您的浏览器不支持HTML本地数据库);
                return ;
            }
            db.transaction(function(trans){
                trans.executeSql(create table if not exists Demo(uName text null,title text null,words text null),[],function(trans,result){},
                        function(trans,message){

                        });
            })
        }
        //创建数据库
      function getCurrentDB(){
          var db = openDatabase(data.db,1.0,demo data,1024*1024);
          return db;
      }
        $(function(){
            //初始化数据库
            initDatabase();
            $("#save").on(click,function(){
                var txtName = $(#userName).val();
                var txtTitle= $(#userTitle).val();
                var txtWords = $(#userContent).val();
                //执行sql脚本来插入数据
                var db = getCurrentDB();
                db.transaction(function(trans){
                    trans.executeSql(insert into Demo(uName,title,words)values(?,?,?),[txtName,txtTitle,txtWords],function(ts,data){},function(ts,message){
                        alert(message);
                    })
                })
            })

            //将数据展示到表格中
            $("#showContent").on(click,function(){
                showAllTheData();
            });

            //显示所有数据库中的数据到页面中
            function showAllTheData(){
                $(#showTable).empty();
                var db =getCurrentDB();
                db.transaction(function(trans){
                    trans.executeSql(select * from Demo,[],function(ts,data){
                        if(data){
                            //循环记录中的数据
                            for(var i=0;i<data.rows.length;i++){
                                //获取每一行数据的json对象(键值对组成),将数据拼接成表格中的一行行数据
                                appendDataToTable(data.rows.item(i));
                            }
                        }
                    },function(ts,message){
                        alert(message);
                    })
                })
            }
            function appendDataToTable(data){
                var txtName =data.uName;
                var txtTitle =data.title;
                var txtWords =data.words;
                var strHTML =‘‘;
                strHTML+=<tr>;
                strHTML += "<td>"+txtName+"</td>";
                strHTML += "<td>"+txtTitle+"</td>";
                strHTML += "<td>"+txtWords+"</td>";
                strHTML+=</tr>;
                $("#showTable").append(strHTML);
            }
        })







    </script>
</head>
<body>
<table>
    <tr>
        <td>用户名:</td>
        <td><input type="text" id="userName"/></td>
    </tr>
    <tr>
        <td>标题:</td>
        <td><input type="text" id="userTitle"/></td>
    </tr>
    <tr>
        <td>留言:</td>
        <td><input type="text" id="userContent"/></td>
    </tr>
</table>
<input type="button" id="save" value="保存" />
<input type="button" id="showContent" value="展示你的信息"/>
<table id =‘showTable‘>

</table>
</body>
</html>

 

以上是关于webSQL的主要内容,如果未能解决你的问题,请参考以下文章

websql操作类封装

webSQL的基本操作

Websql不适用于phonegap构建

在PhoneGap中访问WebSQL数据库对象

如何使用 Kendo UI 查询本地 websql 数据库

WebSQL 错误回调中的“无法读取未定义的属性‘消息’”