Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。

核心方法

以下是规范中定义的三个核心方法:

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

transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。

executeSql:这个方法用于执行实际的 SQL 查询。

打开数据库

我们可以使用 openDatabase() 方法来打开已存在的数据库,如果数据库不存在,则会创建一个新的数据库,使用代码如下:

var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);

openDatabase() 方法对应的五个参数说明:

数据库名称

版本号

描述文本

数据库大小

创建回调

第五个参数,创建回调会在创建数据库后被调用。

执行查询操作

执行操作使用 database.transaction() 函数:

  1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
  2. db.transaction(function (tx) {
  3. tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
  4. });

插入数据

  1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
  2. db.transaction(function (tx) {
  3. tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
  4. tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
  5. tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
  6. });

我们也可以使用动态值来插入数据:

  1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
  2. db.transaction(function (tx) {
  3. tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
  4. tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?)', [e_id, e_log]);
  5. });
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title> 
  6. <script type="text/javascript">
  7. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
  8. var msg;
  9. db.transaction(function (tx) {
  10. tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
  11. tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
  12. tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
  13. msg = '<p>数据表已创建,且插入了两条数据。</p>';
  14. document.querySelector('#status').innerHTML = msg;
  15. });
  16. db.transaction(function (tx) {
  17. tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
  18. var len = results.rows.length, i;
  19. msg = "<p>查询记录条数: " + len + "</p>";
  20. document.querySelector('#status').innerHTML += msg;
  21. for (i = 0; i < len; i++){
  22. msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
  23. document.querySelector('#status').innerHTML += msg;
  24. }
  25. }, null);
  26. });
  27. </script>
  28. </head>
  29. <body>
  30. <div id="status" name="status">状态信息</div>
  31. </body>
  32. </html>



删除记录

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

更新记录

更新记录使用的格式如下

  1. db.transaction(function (tx) {
  2. tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=2');
  3. });

更新指定的数据id也可以是动态的:

  1. db.transaction(function(tx) {
  2. tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=?', [id]);
  3. });
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>菜鸟教程(runoob.com)</title> 
  6. <script type="text/javascript">
  7. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
  8. var msg;
  9. db.transaction(function (tx) {
  10. tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
  11. tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
  12. tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
  13. msg = '<p>数据表已创建,且插入了两条数据。</p>';
  14. document.querySelector('#status').innerHTML = msg;
  15. });
  16. db.transaction(function (tx) {
  17. tx.executeSql('DELETE FROM LOGS WHERE id=1');
  18. msg = '<p>删除 id 为 1 的记录。</p>';
  19. document.querySelector('#status').innerHTML = msg;
  20. });
  21. db.transaction(function (tx) {
  22. tx.executeSql('UPDATE LOGS SET log=\'runoob.com\' WHERE id=2');
  23. msg = '<p>更新 id 为 2 的记录。</p>';
  24. document.querySelector('#status').innerHTML = msg;
  25. });
  26. db.transaction(function (tx) {
  27. tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
  28. var len = results.rows.length, i;
  29. msg = "<p>查询记录条数: " + len + "</p>";
  30. document.querySelector('#status').innerHTML += msg;
  31. for (i = 0; i < len; i++){
  32. msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
  33. document.querySelector('#status').innerHTML += msg;
  34. }
  35. }, null);
  36. });
  37. </script>
  38. </head>
  39. <body>
  40. <div id="status" name="status">状态信息</div>
  41. </body>
  42. </html>



本文查看自:https://www.runoob.com/html/html5-web-sql.html

有趣的HTML5 Web SQL 数据库的更多相关文章

  1. HTML5: HTML5 Web SQL 数据库

    ylbtech-HTML5: HTML5 Web SQL 数据库 1.返回顶部 1. HTML5 Web SQL 数据库 Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个 ...

  2. HTML5 Web SQL 数据库操作

    Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs. 以下是规范中定义的三个核心方法: openDataba ...

  3. HTML5 Web SQL 数据库总结

    Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs. 如果你是一个 Web 后端程序员,应该很容易理解 SQ ...

  4. HTML5 Web SQL 数据库

    呼和浩特seo:Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs. 如果你是一个 Web 后端程序员,应该 ...

  5. HTML5——web存储 Web SQL 数据库 应用程序缓存 Web Workers 服务器发送事件 WebSocket

    web存储 比cookie更好的本地存储方式 localStorage - 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除. sessionStorage - 用于临时保存同一窗口( ...

  6. Web SQL数据库

    Web SQL数据库:它是一个独立的规范,引入了一组使用SQL操作客户端数据库的API. openDatabase方法:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象.如果数据库存在,op ...

  7. HTML5 Web SQL Database 数据库的使用方法【图文说明】

    页面代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  8. (二)HTML5 - Web SQL 本地数据库

    简介 WEB SQL Database即本地的SQLite数据库,使用的方式和方法和SQLite基本相同 判断浏览器是否支持 if (!window.openDatabase) { alert('Da ...

  9. 有趣的HTML5 Web 存储

    HTML5 web 存储,一个比cookie更好的本地存储方式. 什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是 cookie.但是Web ...

随机推荐

  1. iOS程序两中启动图方式和一些坑LaunchImage 和 Assets.xcassets(Images.xcassets)

    一.通过LaunchScreen.storyboard 作启动图 1>在LaunchScreen.storyboard中拖拽一个imageView放上启动图片 注意:记得勾选右边的 User a ...

  2. 模板——网络流Dinic

    感谢这位大佬的博客:https://www.cnblogs.com/SYCstudio/p/7260613.html 给予了我莫大的帮助! 主要说一下网络流的几个注意点: 1.和二分图匹配相似,无法继 ...

  3. js中读取json数据

    1.JSON字符串转为JSON对象 var obj = eval('('+data+')');① var obj = data.praseJSON();② var obj = JSON.prase(d ...

  4. 在Jsp中调用静态资源,路径配置问题

    在Jsp中调用图片.JS脚本等,针对取得的路径有两种调用方式: 1.放入Body中生成绝对路径(不建议) <%@ page language="java" import=&q ...

  5. 订单风险系统BI

    最近被公司叫去协助传统做维表查询服务,项目已经做完.和前端联调过程发现oracle对查询 sql和产品设计还是挺重要的.不能全部堆给代码去做,如何方便代码,代码优化到最高性能才是首要解决的事,前端才能 ...

  6. Teigha的BlockTableRecord获取方法

    Teigha的db(即database)可以有很多BlockTableRecord,可以用 OdDbBlockTablePtr blkTbl = db->getBlockTableId().op ...

  7. Windows API 第19篇 FindFirstVolumeMountPoint FindNextVolumeMountPoint

    相关函数:HANDLE FindFirstVolumeMountPoint(                                                               ...

  8. HZOI20190906模拟39 工业,卡常,玄学

    题面:https://www.cnblogs.com/Juve/articles/11484209.html 工业: 推一个式子,AC 没有用组合数....推了2个多小时 我sbsbsbsbsbsbs ...

  9. 理解最短路径-Dijkstra算法

    最短路径—Dijkstra算法和Floyd算法 透彻理解迪杰斯特拉算法 Dijkstra算法的使用条件:图中不存在负权边. ---------------------------有待验证------- ...

  10. 深入浅出 Java Concurrency (11): 锁机制 part 6 CyclicBarrier[转]

    如果说CountDownLatch是一次性的,那么CyclicBarrier正好可以循环使用.它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).所谓屏障点就 ...