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


97

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


3
file:计划,您是指在运行浏览器的计算机上吗?

3
是。目前,我有一个可以创建报告的工具(一堆图像,html文件和一个sqlite数据库)。我可以简单地在本地打开此报告(即$ google-chrome report_out / index.html)。我想使它更具交互性,因此javascript将从数据库中读取生成的数据并从中创建统计信息。
Pal Szasz

我相信可以通过WebSocket代理建立连接,但是要花很多时间才能建立
hanshenrik 2015年

Answers:


41

其实答案是肯定的。这是一个如何执行此操作的示例:http : //html5doctor.com/introducing-web-sql-databases/

不好的是,它对浏览器的支持非常有限。

HTML5 IndexedDB,Web SQL数据库和浏览器大战在这里有更多信息

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

SQL.js

编辑

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


14
仅供参考,websql已被放弃...改为推广indexedDB
Christoph

2
但是可以连接到已经存在的数据库吗?我已经有很多数据,我想用javascript处理。
Pal Szasz

您可以使用一些服务器端的东西,或尝试使用Node.JS进行此代码forgeek.com/2014/07/node-sqlite-tutorial
Mrug 2015年

40

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


9
本地存储非常缓慢且笨拙……您应该改用indexedDB。尽管如此,我猜这是一个可行的解决方案。
Christoph

2
尽管localstorage不如indexedDB好,但几乎所有地方都支持它。SQL.js并不直接使用localstorage(它在内存中),因此您只需要在启动/关闭时从localstorage中读取/写入,甚至可以将SQL.js的状态保存在服务器上。如果您希望用户专门保存更改,那么好,如果用户不保存就离开,则可能会破坏事情。
珀金斯2015年

20

最新答案

我的sql.js分支现已合并到kriken的repo上的原始版本中

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

原始答案(已过时)

您应该使用的新版本sql.js。它是sqlite 3.8的移植版本,具有良好的文档说明,并且正在积极维护(由我负责)。它支持准备好的语句和BLOB数据类型。


我可以使用sql.js来访问(插入,更新,读取)服务器端的SQLite数据库。
Abhee

@lovasoa如果我使用sql.js,可以在不进行任何安装的情况下让一台新计算机运行我的站点并对它的数据库(数据库存储在与HTML文件夹相同的路径中)进行CRUD吗?
Jeaf Gilbert

1
@JeafGilbert否。sql.js仅在内存中运行,没有任何持久性。如果要在文件系统上写入数据库文件,则必须自己编写该逻辑。
lovasoa

4

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

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

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

以及如何使用

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


5
嘿,看看您答案的第二个修订版,在那里您可以阅读;)
Christoph


-2

恕我直言,最好的方法是通过AJAX使用POST调用Python,并使用Python中的数据库执行您需要做的所有事情,然后将结果返回给javascript。Python对json和sqlite的支持非常出色,即使在最近的Python版本中,它也是100%内置的,因此没有“安装此安装”的麻烦。在Python中:

import sqlite3
import json

...这就是您所需要的。它是每个Python发行版的一部分。

@Sedrick Jefferson要求提供示例,因此(有点拖延),我在这里编写了Javascript和Python之间的独立往返。


2
问题包含“ ...我想从浏览器访问...”。因此,您的答案(带有python)超出了范围(至少在今天,当从浏览器运行python不太容易时)
maxkoryukov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.