QThtml5DBtest.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
 
</head>

<body>
<script src="dbMgr.js" type="text/javascript">
</script>

<script language="javascript" type="text/javascript">

    /*  注:        在Qt 的QWebView里打开,需要设置一些参数
    如:
    ui.webView->page()->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled,true);
    ui.webView->page()->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled,true);
    ui.webView->page()->settings()->setAttribute(QWebSettings::LocalStorageEnabled,true);
    ui.webView->page()->settings()->setOfflineStoragePath("d://home//offline1");
    ui.webView->page()->settings()->setOfflineWebApplicationCachePath("d://home//offline2");
    ui.webView->page()->settings()->setLocalStoragePath("d://home");//  /offline3
    ui.webView->page()->settings()->setOfflineStorageDefaultQuota(1000*1024*1024);
    ui.webView->page()->settings()->setOfflineWebApplicationCacheQuota(500*1024*1024);
    */

 

    /***********************************************************/
    //db回调类
    /***********************************************************/
    function dbFunMgr() { };
    dbFunMgr.SelectCallback = function(tx, result) {
        var str_result = "";
        try {
         //   alert("SelectCall backselect in");
            for (var i = 0; i < result.rows.length; ++i) {
                var row = result.rows.item(i);
                str_result += "id:" + row['id'] + " text:" + row['text'] + "    ";
            }
            alert("select result: " + str_result);
        }
        catch (err) {
            alert("selectCallback:" + err.message);
        }
    }

 

 

    /**************************  end dbFunMgr() *******************/
   
  
   

    /***************************************************************/
    //操作DB 测试各个功能函数类(这是异步操作)
    /*************************************************************/
    function AsynsDBOperate() {
       
    };
    AsynsDBOperate.prototype.keyvalueOperate = function() {
        //key value 的存取
        try {
            localStorage.lastname = "Smith";
            document.write(localStorage.lastname);
            for (var i = 0; i < 10; i++) {
                localStorage.setItem("hello" + i, "Smith" + i * i);
                document.write(localStorage.getItem("hello" + i) + "   /r/n");
            }
        }
        catch (err) {
            alert("localStorage failed");
        }
    }

    AsynsDBOperate.prototype.opendb = function() {
        //创建数据库,创建表
        try {
        //    alert("before open");
            db = openDatabase("test20 ", "1.0", "Client side storage test  add", 200000, function() { alert("on create db"); });
            alert("b create tb");
            db.transaction(function(tx) {
                tx.executeSql("CREATE TABLE IF NOT EXISTS Texts1 (id INT NOT NULL PRIMARY KEY, text VARCHAR(255));", [], function(tx, result) { },
                   function(tx, error) {
                       alert('Failed to retrieve texts from the database - ' + error.message);
                   });
            });
        }
        catch (err) {
            alert("opendb  error" + err.message);
            return;
        }
    }


    AsynsDBOperate.prototype.CreateTable = function()
    {

        try {
           
       //     alert("b create tb");
            db.transaction(function(tx) {
                tx.executeSql("CREATE TABLE IF NOT EXISTS Texts1 (id INT NOT NULL PRIMARY KEY, text VARCHAR(255));", [], function(tx, result) { },
                   function(tx, error) {
                       alert('Failed to retrieve texts from the database - ' + error.message);
                   });
            });
        }
        catch (err) {
            alert("create talbe error" + err.message);
            return;
        }
   
    }


    AsynsDBOperate.prototype.insertData = function() {
        //插入数据
        try {
            var i = 19;
            var str_key = i;
            var str_sql = " INSERT INTO Texts1( id, text) VALUES(" + str_key.toString() + ", 'test1" + str_key.toString() + " ');";
            str_key = i * i;
            var str_sql1 = "INSERT INTO Texts1( id, text) VALUES(" + str_key.toString() + ", 'test1" + str_key.toString() + " ');";
            //  alert(str_sql);

            db.transaction(
                    function(tx) {

         
                        //这里executeSql一次是可以执行多条的
                        tx.executeSql(str_sql.toString(), [], function(tx, result) { }, function(tx, error) {
                            alert('insert error - ' + error.message);
                        });

                        tx.executeSql(str_sql1.toString(), [], function(tx, result) { }, function(tx, error) {
                            alert('insert error - ' + error.message);
                        });

                        //值的绑定,防止代码注入
                        tx.executeSql('INSERT INTO Texts1( id, text)  VALUES (?, ?)', [102, 'oooo'], function(tx, result) { }, function(tx, error) {
                            alert('insert error - ' + error.message);
                        });
              
                    });
            //貌似不能一次执行多条db.transaction。

        }
        catch (err) {
            alert("insert error" + err.message);
        }

    }
    AsynsDBOperate.prototype.updateData = function() {
        //更新数据
        try {
            var i = 19;
            var str_sql_update = "update Texts1 set text =  'modify' where  id = " + i;
            var str_sql_update1 = "update Texts1 set text =  'modify' where  id = " + i * i;
            //       alert(str_sql_update);

            db.transaction(
                function(tx) {
                    tx.executeSql(str_sql_update.toString(), [], function(tx, result) { }, function(tx, error) {
                        alert('update error - ' + error.message);
                    });

                    tx.executeSql(str_sql_update1.toString(), [], function(tx, result) { }, function(tx, error) {
                        alert('update error - ' + error.message);
                    });
                });
        }
        catch (err) {
            alert("update error" + err.message);
        }

    }

 

    AsynsDBOperate.prototype.selectData = function() {

        try {

            db.transaction(function(tx) {
                tx.executeSql("SELECT id, text FROM Texts1", [], dbFunMgr.SelectCallback, function(tx, error) {//  回调函数:dbFunMgr.SelectCallback定义在前面
                    alert('Failed to retrieve texts from the database - ' + error.message);

                });
            });

        }
        catch (err) {
            alert("select error" + err.message);
        }

    }
    /*********************** end funOperate()   ******************************/

 

    //测试DB功能
    try {
     var dbtest = new AsynsDBOperate();
            alert("step1");
            dbtest.opendb();
            alert("step2");
            dbtest.CreateTable();
             alert("step3");         
            dbtest.insertData();
             alert("step4");
            dbtest.updateData();
            alert("step5");
            dbtest.selectData();
            alert("step6");

     }
     catch(err)
     {
        alert("dbtest error : " + err.message);
     }
   
</script>

 


</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值