美文网首页
HTML5 Web SQL 数据库

HTML5 Web SQL 数据库

作者: 龍飝 | 来源:发表于2018-03-22 16:11 被阅读19次

    Web SQL数据库API 并不是HTML5规范的一部分,但是他是一个独立的规范,引入一组使用SQL操作客户端数据的APIs
    如果你是一个Web后端程序员,应该很容易理解SQL的操作
    Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。

    核心方法
    1.openDtabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象
    2.transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或回滚
    3.executeSql:这个方法用于执行实际的SQL查询

    打开数据库
    我们可以使用openDatabase()方法来打开已存在的数据库,如果数据库不村子啊,则会创建一个新的数据库,使用代码如下:
    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);

    openDatabase()方法对应的五个参数
    1.数据库名称
    2.版本号
    3.描述文本
    4.数据库大小
    5.创建回调
    第五个参数,创建回调会子啊创建数据库后被调用

    执行查询操作
    执行查询操作使用 database.teansaction()函数
    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
    db.transaction(function (tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
    });
    上面的语句执行后会在"mydb"数据库中创建爱你一个名为LOGS的表

    插入数据
    在执行上面的创建表语句后,我们可以插入一些数据
    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
    db.transaction(function (tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
    });

    我们也可以使用动态值来插入数据
    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
    db.transaction(function (tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
    tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?)', [e_id, e_log]);
    });
    实例中的 e_id 和 e_log 是外部变量,executeSql 会映射数组参数中的每个条目给 "?"。

    读取数据
    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
    db.transaction(function (tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
    });
    db.transaction(function (tx) {
    tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
    var len = results.rows.length, i;
    msg = "<p>查询记录条数: " + len + "</p>";
    document.querySelector('#status').innerHTML += msg;

      for (i = 0; i < len; i++){
         alert(results.rows.item(i).log );
      }
    

    }, null);
    });

    完整版实例:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>菜鸟教程(runoob.com)</title>
    <script type="text/javascript">

         var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
         var msg;
            
         db.transaction(function (tx) {
            tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
            msg = '<p>数据表已创建,且插入了两条数据。</p>';
            document.querySelector('#status').innerHTML =  msg;
         });
    
         db.transaction(function (tx) {
            tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
               var len = results.rows.length, i;
               msg = "<p>查询记录条数: " + len + "</p>";
               document.querySelector('#status').innerHTML +=  msg;
                    
               for (i = 0; i < len; i++){
                  msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
                  document.querySelector('#status').innerHTML +=  msg;
               }
            }, null);
         });
            
      </script>
    

    </head>

    <body>
    <div id="status" name="status">状态信息</div>
    </body>

    </html>

    删除记录
    删除记录使用的格式如下:
    db.transaction(function (tx) {
    tx.executeSql('DELETE FROM LOGS WHERE id=1');
    });

    删除制定数据的id也可以是动态的
    db.transaction(function(tx) {
    tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]);
    });

    更新记录
    更新记录使用的格式如下
    db.transaction(function (tx) {
    tx.executeSql('UPDATE LOGS SET log='www.w3cschool.cc' WHERE id=2');
    });

    更新指定的数据id也可以是动态的
    db.transaction(function(tx) {
    tx.executeSql('UPDATE LOGS SET log='www.w3cschool.cc' WHERE id=?', [id]);
    });

    完整实例:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>菜鸟教程(runoob.com)</title>
    <script type="text/javascript">

         var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
         var msg;
         
         db.transaction(function (tx) {
            tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
            msg = '<p>数据表已创建,且插入了两条数据。</p>';
            document.querySelector('#status').innerHTML =  msg;
         });
    
         db.transaction(function (tx) {
              tx.executeSql('DELETE FROM LOGS  WHERE id=1');
              msg = '<p>删除 id 为 1 的记录。</p>';
              document.querySelector('#status').innerHTML =  msg;
         });
    
         db.transaction(function (tx) {
             tx.executeSql('UPDATE LOGS SET log=\'runoob.com\' WHERE id=2');
              msg = '<p>更新 id 为 2 的记录。</p>';
              document.querySelector('#status').innerHTML =  msg;
         });
    
         db.transaction(function (tx) {
            tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
               var len = results.rows.length, i;
               msg = "<p>查询记录条数: " + len + "</p>";
               document.querySelector('#status').innerHTML +=  msg;
               
               for (i = 0; i < len; i++){
                  msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
                  document.querySelector('#status').innerHTML +=  msg;
               }
            }, null);
         });
         
      </script>
    

    </head>

    <body>
    <div id="status" name="status">状态信息</div>
    </body>

    </html>

    相关文章

      网友评论

          本文标题:HTML5 Web SQL 数据库

          本文链接:https://www.haomeiwen.com/subject/rruaqftx.html