对于W3Schools页面使用的SQL引擎的特定情况:
Safari,Chrome和Opera浏览器
如果您使用的是Safari浏览器(我在Mac OS X 10.12上进行了测试),则该页面使用的是SQLite,它似乎内置在浏览器本身中。当您按下“运行SQL”按钮时,它不使用任何外部资源。进一步的逆向工程表明,该页面正在通过以下JavaScript代码初始化数据库:
function w3WebSQLInit() {
var w3DBObj = this;
w3Database = window.openDatabase('W3SchoolsDemoDatabase', '1.0', 'W3SchoolsDemoDatabase', 2 * 1024 * 1024);
...
}
window.openDatabase
表示代码正在使用Web SQL数据库。这是几年前由W3C定义的,并由Opera,Safari和Chrome(AFAIK)付诸实践,但FireFox(或Explorer)并未付诸实践。这三种浏览器似乎都通过在其内部嵌入不同版本的SQLite来实现“ Web SQL数据库”。
在这一点上,W3C页面声称:
“当心。该规范不再处于主动维护中,并且Web应用程序工作组不打算进一步维护它。”
我测试了一个Chrome浏览器(在Windows 10上为56.0.2924.87版本),它似乎使用了SQLite 3.10.2。Opera(在Windows 10上为12.15版)使用SQLite 3.7.9。
Opera在它们的“关于”中足够清楚:
和Safari浏览器客户端存储和离线应用程序编程指南还提到,
Safari从Safari 3.1和iOS 2.0开始,支持HTML5 JavaScript数据库类。JavaScript数据库类基于SQLite,提供了一个关系数据库,用于本地存储内容,该内容太大而无法方便地存储在Cookie中(或者太重要了而不能冒风险)用户清除其Cookie时意外删除)。
我没有研究Chrome ...但是我的猜测很明确。
FireFox,Edge和Internet Explore浏览器
如果您使用FireFox浏览器(我在Mac OS X 10.12上进行了测试);相同的W3School页面的行为完全不同。它不会在浏览器上执行查询,而是将请求发送到其服务器。在服务器端,我认为它实际上是在使用类似于MS Access数据库的数据库。一种检查方法是检查(标准)information_schema
。
如果发出以下查询(在符合标准的数据库中,该查询将为用户提供表的列表):
SELECT * FROM information_schema.tables;
您得到以下(太明显)错误响应:
Could not find file 'C:\Windows\SysWOW64\inetsrv\information_schema.mdb'.
如果软件正在寻找.MDB文件,则意味着他们在服务器端使用Microsoft Jet数据库引擎(或等效的东西),并且他们在使用Access .MDB格式文件,该文件对应于以下版本的Access版本。包括2003。(Access 2007和更高版本默认使用.ACCDB格式文件)。
Microsoft Internet Explorer 11的行为方式相同(在Windows 10上);Edge也是如此(在Windows 10上)。