14

我有一个使用 SQLite 进行存储的应用程序。我们需要对其进行更改以使其能够与 Firefox 和其他浏览器一起使用。

LocalStorage 似乎是选择。但是,localStorage 不提供更复杂的 sql 功能(例如 OrderBy、GroupBy、表连接等)。

有谁知道可以与 localStorage 一起使用并使其行为更像 SQL 的 Javascript 现有库?-谢谢

4

5 回答 5

8

您可以使用其中一种 javascript linq 实现。他们从普通的 javascript 对象/数组中获取数据,因此与 localstorage 的接口应该非常容易。

http://jslinq.codeplex.com/
http://linqjs.codeplex.com/
甚至http://www.thomasfrank.se/sqlike.html

他们的在线演示:http ://secretgeek.net/JsLinq/ (注意左上角的选项)

我不太确定插入/更新方面,但你可以肯定用它们做一些很好的数据查询。

于 2012-12-25T22:15:41.453 回答
7

试试sql.js。这是 SQLite 从原生 C 到纯 javascript 的直接端口。

于 2013-10-05T02:08:52.120 回答
4

试试alasql.js。这是一个用纯 JavaScript 编写的 SQL 数据库。即使它没有与 locasStorage 一起使用的功能,但您可以在会话或更改之前和之后轻松保存和恢复所需的所有数据。

这是一个如何将 Alasql 与 localStorage 一起使用的示例:

// Create database and table structure
var db = new alasql.Database();
db.exec('CREATE TABLE students (studentid INT, school STRING)');

// Load table data from localStorage if it exists or create new table
if(localStorage['students']) {
    db.tables.students.data = JSON.parse(localStorage['students']);
} else {
    db.tables.students.data = [
       {studentid: 55, school: 'abc'},
       {studentid: 56, school: 'klm'},
       {studentid: 57, school: 'nyz'}
    ];
    localStorage['students'] = JSON.stringify(db.tables.students.data);
};

// Add new student and save database
db.tables.students.data.push({student: 100, school:'qwe'}); 
localStorage['students'] = JSON.stringify(db.tables.students.data);

// SQL-query
console.log(db.exec("SELECT * FROM students WHERE school > 'ght'"));

这个例子在 Fiddle

于 2014-10-30T10:44:59.700 回答
3

如果您正在寻找 SQLLite 的 HTML5 / JavaScript 关系数据库替代品: SequelSphere

SequelSphere 是一个 Javascript 库,适用于所有现代浏览器和平台,并将其数据存储在 IndexedDB 和 LocalStorage 中(取决于浏览器支持的内容)。它可以轻松地与任何 3rd 方 RIA 框架集成,并提供“更改跟踪器”来帮助进行数据同步。

由于您询问了复杂的 SELECT 功能,因此可以在 SequelSphere 的网站上找到以下内容:Top 9 Cool SequelSphere 功能

SequelSphere 最令人印象深刻的功能必须是其革命性的 SQL 解析和执行引擎。它处理所有正常的 SELECT 功能和表达式,然后处理 LEFT、RIGHT 和 FULL 外连接。它不仅拥有处理无限嵌套的子查询,它还在每个主要子句(SELECT、FROM、WHERE、JOIN、ON、HAVING 甚至 GROUP BY!)中处理它们。说到分组,它还处理分组集、汇总、多维数据集和总计分组功能。它甚至可以优雅地处理复杂的条件表达式,例如:

(a,b) 不在 ((1, 2), (3, 4), (select c, d from tab))

再加上在运行时混合自定义、用户定义的函数和第三方表的能力(这两个功能本身就很酷),SQL 引擎确实非同寻常。没有其他 SQL 引擎可以做到这些事情,更不用说在所有主要浏览器和平台上 100% 使用 JavaScript 做到这一点了。而且,我们不要忘记它以极快的速度完成所有这些工作:解析、规划和优化所有发生的亚毫秒级。

完整披露:我是 SequelSphere 的一员,产品很棒。

于 2012-12-26T13:42:15.157 回答
1

试试我的开源库https://bitbucket.org/ytkyaw/ydn-db/wiki/Home它有 IndexedDB、WebSQL 和网络存储。提供了丰富的查询选项。令人惊讶的易于使用。

于 2012-12-27T05:37:50.213 回答