是否可以从JavaScript访问SQLite数据库?

Pal*_*asz 80 html javascript database sqlite

我有一组HTML文件和一个SQLite数据库,我想使用file:// scheme从浏览器访问它.是否可以使用JavaScript访问数据库并创建查询(和表)?

Min*_*hev 37

实际上答案是肯定的.以下是如何执行此操作的示例:http://html5doctor.com/introducing-web-sql-databases/

糟糕的是,浏览器的支持非常有限.

更多信息,请参阅HTML5 IndexedDB,Web SQL数据库和浏览器大战

PS:正如@Christoph所说,Web SQL不再处于主动维护状态,Web应用工作组也不打算进一步维护它,所以请看https://developer.mozilla.org/en-US/docs/IndexedDB.


编辑

正如@clentfort所说,您可以使用SQL.js使用客户端JavaScript访问SQLite数据库.

  • FYI websql已被放弃......推广**[indexedDB](https://developer.mozilla.org/en-US/docs/IndexedDB)**. (14认同)
  • 但是可以连接到现有的数据库吗?我已经有一堆数据,我想用javascript处理. (2认同)

cle*_*ort 34

您可以使用SQL.js,它是编译为JavaScript的SQLlite lib,并将数据库存储在HTML5中引入的本地存储中.

  • 本地存储非常缓慢和笨拙......你应该使用indexedDB.尽管如此,我猜这是一个有效的解决方案. (6认同)
  • 虽然localstorage不如indexedDB好,但几乎无处不在.SQL.js不直接使用localstorage(它在内存中),所以你只需要在启动/关闭时读取/写入localstorage,你甚至可以在服务器上保存SQL.js的状态.如果您希望用户专门保存更改,那么很好,如果用户离开而不让它保存则会损坏. (2认同)

lov*_*soa 19

最新答案

我的sql.js的fork现在已经合并到kriken的repo上的原始版本中.

良好的文档也可在原来的回购.

原始答案(过时)

您应该使用的新版本sql.js.它是一个sqlite 3.8的端口,有一个很好的文档,并积极维护(由我).它支持预处理语句和BLOB数据类型.

  • @JeafGilbert 不。sql.js 仅在内存中运行,没有任何内容被持久化。如果您想在文件系统上写入数据库文件,则必须自己编写该逻辑。 (2认同)

Tal*_*lha 5

其中最有趣的功能之一HTML5是能够在本地存储数据并允许应用程序离线运行。共有三种不同的 API 可以处理这些功能,选择一种 API 取决于您想要对计划在本地存储的数据执行什么操作:

  1. Web 存储:用于带有键/值对的基本本地存储
  2. 离线存储:使用清单缓存整个文件以供离线使用
  3. Web数据库:用于关系数据库存储

有关更多参考信息,请参阅 HTML5 存储 API 简介

以及如何使用

http://cookbooks.adobe.com/post_Store_data_in_the_HTML5_SQLite_database-19115.html

  • 呵呵,看看你的答案的第二次修订,你可以在那里阅读;) (5认同)